Hướng dẫn is this in cpp same as self in python? - cái này trong cpp có giống với cái tự trong python không?

Có họ thực hiện cùng một khái niệm. Họ phục vụ mục đích cung cấp một tay cầm cho trường hợp của lớp, trên đó phương thức được thực thi. Hoặc, trong các từ ngữ khác, ví dụ mà phương pháp được gọi.

Có lẽ ai đó thông minh hơn sẽ chỉ ra sự khác biệt thực sự nhưng đối với một người dùng khá bình thường, Pythonic self về cơ bản tương đương với C ++ *this.

Tuy nhiên, tham chiếu đến bản thân trong Python được sử dụng rõ ràng hơn. Ví dụ. Nó được trình bày rõ ràng trong khai báo phương pháp. Và các cuộc gọi phương thức được thực thi trên thể hiện đối tượng được gọi phải được thực thi một cách rõ ràng bằng cách sử dụng self.

I.e:

def do_more_fun(self):
  #haha
  pass

def method1(self, other_arg):
  self.do_more_fun()

Điều này trong C ++ sẽ trông giống như:

void do_more_fun(){
  //haha
};

void method1(other_arg){
  do_more_fun();
  // this->do_more_fun(); // also can be called explicitly through `this`
}

Cũng như Juanchopanza đã chỉ ra, this là một từ khóa trong c++ để bạn thực sự không thể sử dụng tên khác cho nó. Điều này phù hợp với sự khác biệt khác, bạn không thể bỏ qua việc vượt qua this trong phương thức c++. Cách duy nhất để làm điều đó là làm cho nó tĩnh. Điều này cũng giữ cho Python nhưng theo quy ước khác nhau. Trong cuộc tranh luận 1 của Python luôn được gán hoàn toàn tham chiếu cho bản thân. Vì vậy, bạn có thể chọn bất kỳ tên nào bạn thích. Để ngăn chặn nó, và có thể thực hiện một phương pháp tĩnh trong Python, bạn cần sử dụng

void do_more_fun(){
  //haha
};

void method1(other_arg){
  do_more_fun();
  // this->do_more_fun(); // also can be called explicitly through `this`
}
2 Decorator (tham khảo).

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Từ khóa tự được sử dụng để chỉ bản thân lớp hiện tại trong phạm vi của lớp đó chỉ trong khi đó, điều này được sử dụng để chỉ các biến và chức năng của thành viên cho một trường hợp cụ thể của một lớp.self is used to refer to the current class itself within the scope of that class only whereas, $this is used to refer to the member variables and function for a particular instance of a class.

    Tự gọi là gì trong Python? self operator represents the current class and thus is used to access class variables or static variables because these members belong to a class rather than the object of that class.
    Syntax:

    self::$static_member

    Tự: Tự đại diện cho trường hợp của lớp. Bằng cách sử dụng từ khóa "tự", tất cả các thuộc tính và phương thức của lớp Python có thể được truy cập. __init__: "__init__" là một phương pháp dành riêng trong các lớp Python. Nó được biết đến như một hàm tạo trong các khái niệm định hướng đối tượng. $this, as the ‘$’ sign suggest, is an object. $this represents the current object of a class. It is used to access non-static members of a class.
    Syntax:

    $that->$non_static_member;

    Xem thảo luận:

    Example:

    Cải thiện bài viết

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    3

    Lưu bài viết

    Đọc

    Bàn luận

    Nhà điều hành tự: Người tự vận hành đại diện cho lớp hiện tại và do đó được sử dụng để truy cập các biến lớp hoặc biến tĩnh vì các thành viên này thuộc về một lớp chứ không phải là đối tượng của lớp đó.SyNTAX:

    $ Nhà điều hành này: $ này, như dấu hiệu ‘$ $, là một đối tượng. $ Điều này đại diện cho đối tượng hiện tại của một lớp. Nó được sử dụng để truy cập các thành viên không tĩnh của một lớp.syntax:

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    7
    $that->$non_static_member;
    5

    Khi nào nên sử dụng bản thân trên $ này trong PHP:

    PHP

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    7
    $that->$non_static_member;
    5

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    4
    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    5
    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    6

    $that->$non_static_member;
    0
    $that->$non_static_member;
    1 self4

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    7
    $that->$non_static_member;
    5

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    4
    $that->$non_static_member;
    5

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    4*this0 *this1*this2 *this3

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    4*this0*this6*this7
    self::$static_member
    0

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    4self0
    self::$static_member
    4 *this1self3
    self::$static_member
    0

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    4self6 self7 self8*this0this0this1
    self::$static_member
    0

    void do_more_fun(){
      //haha
    };
    
    void method1(other_arg){
      do_more_fun();
      // this->do_more_fun(); // also can be called explicitly through `this`
    }
    
    4self6 this5 this6

    this7

    Đầu ra

    Name : GFG
    Age  : 18

    Sự khác biệt giữa bản thân và $ này:

    bản thân

    $this

    Keywnd của Keyw được biết đến bởi аny symb®l, chúng ta có thể sử dụng nó như nó là., we can use it as it is. Từ khóa này nên được tiền đề với biểu tượng $ bất cứ khi nào đề cập đến các thành viên trong lớp. $ symbol whenever referring to the class members.
    Để truy cập các biến và phương thức lớp, toán tử độ phân giải phạm vi được sử dụng.Để truy cập các biến và phương thức lớp, một toán tử mũi tên ( ->) được sử dụng.
    Từ khóa tự được sử dụng để truy cập các thành viên tĩnh của lớp có trong chương trình.$ Điều này được sử dụng để truy cập các thành viên không tĩnh của lớp có trong chương trình.
    Từ khóa tự đề cập đến các thành viên trong lớp, nhưng không chỉ vào bất kỳ đối tượng cụ thể nào của lớp. & NBSP;& nbsp; $ Điều này có thể đề cập đến các biến và chức năng thành viên cho một thể hiện được chọn của lớp.

    Bản thân có giống như thế này không?

    Về mặt kỹ thuật, cả bản thân và điều này đều được sử dụng cho cùng một điều. Chúng được sử dụng để truy cập biến liên quan đến thể hiện hiện tại. Chỉ có sự khác biệt là, bạn phải bao gồm một cách rõ ràng như tham số đầu tiên cho một phương thức thể hiện trong Python, trong khi đây không phải là trường hợp với Java.. They are used to access the variable associated with the current instance. Only difference is, you have to include self explicitly as first parameter to an instance method in Python, whereas this is not the case with Java.

    CPP có bản thân không?

    Một tuyên bố lớp có thể chứa đối tượng tĩnh của loại tự, nó cũng có thể có con trỏ tự thân, nhưng nó không thể có một đối tượng không tĩnh của loại tự.Ví dụ, chương trình sau hoạt động tốt.Và chương trình sau cũng hoạt động tốt.. For example, following program works fine. And following program also works fine.

    Có phải từ khóa tự giống như từ khóa này?

    Từ khóa tự được sử dụng để chỉ bản thân lớp hiện tại trong phạm vi của lớp đó chỉ trong khi đó, điều này được sử dụng để chỉ các biến và chức năng của thành viên cho một trường hợp cụ thể của một lớp.

    Tự gọi là gì trong Python?

    Tự: Tự đại diện cho trường hợp của lớp.Bằng cách sử dụng từ khóa "tự", tất cả các thuộc tính và phương thức của lớp Python có thể được truy cập.__init__: "__init__" là một phương pháp dành riêng trong các lớp Python.Nó được biết đến như một hàm tạo trong các khái niệm định hướng đối tượng.represents the instance of the class. By using the "self" keyword all the attributes and methods of the python class can be accessed. __init__ : "__init__" is a reserved method in python classes. It is known as a constructor in object oriented concepts.