Hướng dẫn python call class method with self - python gọi phương thức lớp với self

Trong ví dụ, lớp kiểm tra có hai phương thức thể hiện và một classmethodTest class has two instance method and one classmethod

Trong phương thức set_cls_var_1, tôi đặt biến lớp bằng cách sử dụng bản thân.set_cls_var_1 method I set class variable using self.

Trong phương thức set_cls_var_2, tôi gọi phương thức lớp bằng cách sử dụng bản thân.set_cls_var_2 method I call class method using self.

   class Test():

        #class variable
        cls_var = 10

        def __init__(self):
           obj_var=20

        def set_cls_var_1(self,val):
            #second method to access class variable
            print "first "
            self.cls_var = val

        def set_cls_var_2(self):
            print "second"
            self.task(200)

        @classmethod
        def task(cls,val):
            cls.cls_var = val


t=Test()

#set class variable by first method
t.set_cls_var_1(100)

print Test.cls_var

#set class variable by second method
t.set_cls_var_2()

print Test.cls_var

Đầu ra

first 
10
second
200

Đầu ra mong đợi

first 
100
second
200

Câu hỏi của tôi là: Tại sao chỉ có lớp học mới có thể tự gọi, tại sao không biến lớp học

Đã hỏi ngày 15 tháng 7 năm 2017 lúc 18:47Jul 15, 2017 at 18:47

Hướng dẫn python call class method with self - python gọi phương thức lớp với self

KallzkallzKallz

3.0761 Huy hiệu vàng19 Huy hiệu bạc38 Huy hiệu đồng1 gold badge19 silver badges38 bronze badges

3

Khi bạn cố gắng truy cập thuộc tính của một đối tượng bằng cách sử dụng self, Python trước tiên sẽ tìm kiếm các thuộc tính của đối tượng. Nếu nó không thể tìm thấy nó ở đó, thì việc tìm kiếm các thuộc tính của lớp đối tượng. Đó là những gì đang xảy ra trong trường hợp của bạn;

Python đầu tiên tìm kiếm các thuộc tính của ____ ____ 6. Nó không tìm thấy cls_var, vì vậy sau đó nó tìm kiếm các thuộc tính của lớp ____. Nó tìm thấy cls_var để nó dừng lại và trả về giá trị của ____ 7.

Tuy nhiên, khi gán các thuộc tính cho self, Python luôn gán chúng trực tiếp cho đối tượng và không bao giờ lớp đối tượng trừ khi được bảo rõ ràng là làm như vậy. Đó là lý do tại sao việc khẳng định

first 
10
second
200
2 cho
first 
10
second
200
3 không ảnh hưởng đến ____ 14 ____ của ____7 attrbiute.

Đã trả lời ngày 15 tháng 7 năm 2017 lúc 19:06Jul 15, 2017 at 19:06

Hướng dẫn python call class method with self - python gọi phương thức lớp với self

Christian Deanchristian Trưởng khoaChristian Dean

21.5K7 Huy hiệu vàng 50 Huy hiệu bạc80 Huy hiệu Đồng7 gold badges50 silver badges80 bronze badges

2

Tôi tìm thấy một cái gì đó khác luôn sử dụng các cách sau để truy cập classmethod hoặc biến trong phương thức ví dụ

class Test():
    #class variable
    cls_var = 10

    def __init__(self):
        obj_var=20

    def set_cls_var_1(self,val):
        #first method to access class variable
        print "first type"
        cls = self.__class__
        cls.cls_var = val



t=Test()
#set class variable by first method

t.set_cls_var_1(100)

print Test.cls_var

Đã trả lời ngày 15 tháng 7 năm 2017 lúc 19:15Jul 15, 2017 at 19:15

Hướng dẫn python call class method with self - python gọi phương thức lớp với self

KallzkallzKallz

3.0761 Huy hiệu vàng19 Huy hiệu bạc38 Huy hiệu đồng1 gold badge19 silver badges38 bronze badges

Khi bạn cố gắng truy cập thuộc tính của một đối tượng bằng cách sử dụng self, Python trước tiên sẽ tìm kiếm các thuộc tính của đối tượng. Nếu nó không thể tìm thấy nó ở đó, thì việc tìm kiếm các thuộc tính của lớp đối tượng. Đó là những gì đang xảy ra trong trường hợp của bạn;

Python đầu tiên tìm kiếm các thuộc tính của ____ ____ 6. Nó không tìm thấy cls_var, vì vậy sau đó nó tìm kiếm các thuộc tính của lớp ____. Nó tìm thấy cls_var để nó dừng lại và trả về giá trị của ____ 7.

Tuy nhiên, khi gán các thuộc tính cho self, Python luôn gán chúng trực tiếp cho đối tượng và không bao giờ lớp đối tượng trừ khi được bảo rõ ràng là làm như vậy. Đó là lý do tại sao việc khẳng định

first 
10
second
200
2 cho
first 
10
second
200
3 không ảnh hưởng đến ____ 14 ____ của ____7 attrbiute.

class A(object):
    a = 1
a = A()
print a.a  # prints 1
A.a = 2
print a.a  # prints 2

Đã trả lời ngày 15 tháng 7 năm 2017 lúc 19:06

Christian Deanchristian Trưởng khoa

21.5K7 Huy hiệu vàng 50 Huy hiệu bạc80 Huy hiệu ĐồngJul 15, 2017 at 19:00

Tôi tìm thấy một cái gì đó khác luôn sử dụng các cách sau để truy cập classmethod hoặc biến trong phương thức ví dụAnis

Đã trả lời ngày 15 tháng 7 năm 2017 lúc 19:1516 silver badges21 bronze badges

Bạn có thể sử dụng bản thân trong một phương thức lớp Python không?

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.By using the "self" keyword all the attributes and methods of the python class can be accessed.

Bạn có thể tự gọi một phương thức lớp không?

Phương thức thể hiện cần một thể hiện lớp và có thể truy cập phiên bản thông qua bản thân. Phương pháp lớp không cần một thể hiện lớp. Họ không thể truy cập phiên bản (tự) nhưng họ có quyền truy cập vào lớp thông qua CLS. Phương pháp tĩnh không có quyền truy cập vào CLS hoặc bản thân. . Class methods don't need a class instance. They can't access the instance ( self ) but they have access to the class itself via cls . Static methods don't have access to cls or self .

Làm thế nào để bạn gọi một phương thức lớp trong Python?

Để gọi một phương thức lớp, hãy đặt lớp làm đối số đầu tiên.Các phương thức lớp có thể được gọi từ các trường hợp và từ chính lớp.Tất cả những người này sử dụng cùng một phương pháp.Phương pháp có thể sử dụng các biến và phương thức của các lớp.put the class as the first argument. Class methods can be can be called from instances and from the class itself. All of these use the same method. The method can use the classes variables and methods.

Có phải tất cả các phương pháp lớp Python có cần bản thân không?

Tự là phương pháp đầu tiên của mọi lớp Python khi bạn xác định một lớp trong Python, mọi phương pháp mà bạn xác định, phải chấp nhận trường hợp đó là đối số đầu tiên của nó (được gọi là bản thân theo quy ước).Biến bản thân chỉ vào thể hiện của lớp mà bạn đang làm việc. When you define a class in Python, every method that you define, must accept that instance as its first argument (called self by convention). The self variable points to the instance of the class that you're working with.