Trước khi so sánh và ví dụ về các thuộc tính lớp và đối tượng, trước tiên hãy định nghĩa chúng - - Thuộc tính lớp là một biến thuộc về một lớp nhất định chứ không phải một đối tượng cụ thể. Mọi thể hiện của lớp này chia sẻ cùng một biến. Các thuộc tính này thường được định nghĩa bên ngoài hàm tạo
__init__ - Thuộc tính thể hiện/đối tượng là một biến thuộc về một (và chỉ một) đối tượng. Mỗi thể hiện của một lớp trỏ đến các biến thuộc tính của chính nó. Các thuộc tính này được định nghĩa trong hàm tạo
__init__ Tại sao mặc dù?Tại sao người ta cần sử dụng thuộc tính lớp và thuộc tính đối tượng? Trong một thế giới song song chỉ toàn những chú chó, mỗi chú chó đều có tên và tuổi. Tổng số chó phải được cập nhật mọi lúc. Tất cả điều này phải được xác định trong một lớp. Điều này có thể trông giống như thế này class Dog: dogs_count = 0 def __init__(self, name, age): self.name = name self.age = age print("Welcome to this world {}!".format(self.name)) Dog.dogs_count += 1 def __del__(self): print("Goodbye {} :(".format(self.name)) Dog.dogs_count -= 1 Trong lớp này, chúng tôi có một thuộc tính lớp dogs_count . Biến này theo dõi số lượng chó chúng ta có trong thế giới chó của chúng ta. Chúng tôi có hai thuộc tính thể hiện, name và age . Các biến này là duy nhất cho mỗi con chó (các thuộc tính của mỗi phiên bản có các vị trí bộ nhớ khác nhau). Mỗi khi hàm __init__ được thực thi, dogs_count sẽ tăng. Tương tự như vậy — mỗi khi một con chó chết (không may là chó không sống mãi trên đời này), gọi phương thức a = Dog("Max", 1) print("Number of dogs: {}".format(Dog.dogs_count)) b = Dog("Charlie", 7) del a c = Dog("Spot", 4.5) print("Number of dogs: {}".format(Dog.dogs_count)) del b del c print("Number of dogs: {}".format(Dog.dogs_count))Output: Welcome to this world Max! Number of dogs: 1 Welcome to this world Charlie! Goodbye Max :( Welcome to this world Spot! Number of dogs: 2 Goodbye Charlie :( Goodbye Spot :( Number of dogs: 0 2, thì dogs_count giảma = Dog("Max", 1) print("Number of dogs: {}".format(Dog.dogs_count)) b = Dog("Charlie", 7) del a c = Dog("Spot", 4.5) print("Number of dogs: {}".format(Dog.dogs_count)) del b del c print("Number of dogs: {}".format(Dog.dogs_count))Output: Welcome to this world Max! Number of dogs: 1 Welcome to this world Charlie! Goodbye Max :( Welcome to this world Spot! Number of dogs: 2 Goodbye Charlie :( Goodbye Spot :( Number of dogs: 0 á ha. Chúng tôi quản lý để gán các biến duy nhất cho một đối tượng trong khi có một biến chung mà tất cả các đối tượng chứa Kế thừa các thuộc tính Trước khi mở chủ đề này, chúng ta hãy xem thuộc tính tích hợp sẵn a = Dog("Max", 1) print("Number of dogs: {}".format(Dog.dogs_count)) b = Dog("Charlie", 7) del a c = Dog("Spot", 4.5) print("Number of dogs: {}".format(Dog.dogs_count)) del b del c print("Number of dogs: {}".format(Dog.dogs_count))Output: Welcome to this world Max! Number of dogs: 1 Welcome to this world Charlie! Goodbye Max :( Welcome to this world Spot! Number of dogs: 2 Goodbye Charlie :( Goodbye Spot :( Number of dogs: 0 4class Example: classAttr = 0 def __init__(self, instanceAttr): self.instanceAttr = instanceAttra = Example(1) print(a.__dict__) print(Example.__dict__)Output: {'instanceAttr': 1} {'__module__': '__main__', '__doc__': None, '__dict__': <attribute '__dict__' of 'Example' objects>, '__init__': <function Example.__init__ at 0x7f8af2113f28>, 'classAttr': 0, '__weakref__': <attribute '__weakref__' of 'Example' objects>} Như chúng ta có thể thấy, cả lớp và đối tượng đều có một từ điển với các khóa và giá trị thuộc tính. Từ điển lớp lưu trữ nhiều thuộc tính tích hợp mà một phiên bản không chứa b = Example(2) print(b.classAttr) print(Example.classAttr) b.classAttr = 653 print(b.classAttr) print(Example.classAttr)Output: 0 0 653 0 TUYỆT VỜI. Quay trở lại những gì tôi đã viết trước đó, mỗi phiên bản của một lớp chia sẻ các thuộc tính lớp giống nhau. Điều gì đã xảy ra ở đây? . Nhìn vào từ điển của các yếu tố này sẽ cung cấp cho cái nhìn sâu sắc hơn b = Example(2) print(b.__dict__) print(Example.__dict__) b.classAttr = 653 print(b.__dict__) print(Example.__dict__)Output: {'instanceAttr': 2} '__module__': '__main__', '__doc__': None, '__dict__': <attribute '__dict__' of 'Example' objects>, '__init__': <function Example.__init__ at 0x7f8af2113f28>, 'classAttr': 0, '__weakref__': <attribute '__weakref__' of 'Example' objects>} {'instanceAttr': 2, 'classAttr': 653} {'__module__': '__main__', '__doc__': None, '__dict__': <attribute '__dict__' of 'Example' objects>, '__init__': <function Example.__init__ at 0x7f8af2113f28>, 'classAttr': 0, '__weakref__': <attribute '__weakref__' of 'Example' objects>} Nhìn kỹ, chúng tôi nhận thấy rằng a = Dog("Max", 1) print("Number of dogs: {}".format(Dog.dogs_count)) b = Dog("Charlie", 7) del a c = Dog("Spot", 4.5) print("Number of dogs: {}".format(Dog.dogs_count)) del b del c print("Number of dogs: {}".format(Dog.dogs_count))Output: Welcome to this world Max! Number of dogs: 1 Welcome to this world Charlie! Goodbye Max :( Welcome to this world Spot! Number of dogs: 2 Goodbye Charlie :( Goodbye Spot :( Number of dogs: 0 5 đã được thêm vào từ điển của đối tượng, với giá trị được sửa đổi của nó. Từ điển của lớp vẫn giữ nguyên, điều này cho thấy rằng các thuộc tính của lớp đôi khi có thể hoạt động như các thuộc tính thể hiệnPhần kết luậnTóm lại, các thuộc tính lớp và đối tượng cực kỳ hữu ích nhưng có thể trở nên lộn xộn khi được sử dụng cùng nhau. Thuộc tính lớp thuận lợi khi mỗi đối tượng cần chia sẻ một biến, chẳng hạn như bộ đếm. Các thuộc tính đối tượng có lợi thế khi mỗi đối tượng duy nhất cần các giá trị riêng của nó, điều gì đó khiến chúng khác biệt với các đối tượng khác
Thuộc tính và biến là gì?
Trong khoa học và nghiên cứu, thuộc tính là phẩm chất của một đối tượng (người, vật, v.v. ). Các thuộc tính có quan hệ mật thiết với các biến. Biến là một tập hợp logic các thuộc tính . Các biến có thể "thay đổi" - ví dụ: cao hoặc thấp.
Thuộc tính trong Python là gì?
Thuộc tính và biến có giống nhau không?
Biến và thuộc tính. Trong các nghiên cứu thống kê, các biến là các giá trị hoặc tập hợp có thể định lượng thay đổi theo thời gian. Thuộc tính là đặc điểm của một thứ liên quan đến chất lượng không thể định lượng được
Biến trong Python là gì?
Biến Python là tên tượng trưng là tham chiếu hoặc con trỏ tới đối tượng . Khi một đối tượng được gán cho một biến, bạn có thể gọi đối tượng bằng tên đó. Nhưng bản thân dữ liệu vẫn được chứa trong đối tượng. Ví dụ. >>> >>> n = 300. |