Hướng dẫn what is the difference between class attributes and instance attributes in python - Sự khác biệt giữa thuộc tính lớp và thuộc tính cá thể trong python là gì


Các thuộc tính lớp là các biến được xác định trực tiếp trong lớp được chia sẻ bởi tất cả các đối tượng của lớp. are the variables defined directly in the class that are shared by all objects of the class.

Thuộc tính thể hiện là thuộc tính hoặc thuộc tính được gắn vào một thể hiện của một lớp. Các thuộc tính thể hiện được xác định trong hàm tạo. are attributes or properties attached to an instance of a class. Instance attributes are defined in the constructor.

Bảng sau liệt kê sự khác biệt giữa thuộc tính lớp và thuộc tính phiên bản:

Thuộc tính lớp Thuộc tính thể hiện
Được xác định trực tiếp bên trong một lớp. Được xác định bên trong một hàm tạo bằng tham số self.
Chia sẻ trên tất cả các đối tượng. Cụ thể cho đối tượng.
Được truy cập bằng tên lớp cũng như sử dụng đối tượng với ký hiệu DOT, ví dụ: classname.class_attribute hoặc
>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
0
Truy cập bằng ký hiệu chấm đối tượng, ví dụ:
>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
1
Thay đổi giá trị bằng cách sử dụng
>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
2 sẽ được phản ánh cho tất cả các đối tượng.
Thay đổi giá trị của thuộc tính thể hiện sẽ không được phản ánh cho các đối tượng khác.

Ví dụ sau đây cho thấy việc sử dụng thuộc tính lớp

>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
3.

class Student:
    count = 0
    def __init__(self):
        Student.count += 1                

Trong ví dụ trên,

>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
3 là một thuộc tính trong lớp học sinh. Bất cứ khi nào một đối tượng mới được tạo, giá trị của
>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
3 được tăng lên bởi 1. Bây giờ bạn có thể truy cập thuộc tính
>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
3 sau khi tạo các đối tượng, như được hiển thị bên dưới.

>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2

Sau đây thể hiện các thuộc tính thể hiện.

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age

Bây giờ, bạn có thể chỉ định các giá trị trong khi tạo một thể hiện, như được hiển thị bên dưới.

>>> std = Student('Bill',25)
>>> std.name
'Bill'
>>> std.age
25
>>> std.name = 'Steve'
>>> std.age = 45
>>> std.name
'Steve'
>>> std.age
45

Ghé thăm lớp Python để biết thêm thông tin.



Là một ngôn ngữ hướng đối tượng, Python cung cấp hai phạm vi cho các thuộc tính: thuộc tính lớp và thuộc tính thể hiện. Hãy tưởng tượng một lớp giống như một bản thiết kế mà từ đó các đối tượng khác nhau được tạo ra.

Mỗi đối tượng là một thể hiện của một lớp. Chúng ta có thể lấy lớp học con chó là một ví dụ để giải thích điều này.

Chó có thể có dữ liệu như màu sắc, tên hoặc giống, và các hành vi như: chạy, sủa, ngồi, ăn, và nhiều hơn nữa. Dữ liệu trong một lớp được gọi là các thuộc tính và hành vi được gọi là phương thức.

Ví dụ về một con chó tên là Nemo Nemo:

Lớp học -> Chó

Thuộc tính-> & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; tên: nemo

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; màu: đen

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; giống: Golden Retriever

Phương thức-> & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; bark

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; chạy

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ăn

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ngồi

Vì vậy, đối tượng của chúng tôi về lớp học chó, tên là Nemo, màu sắc của nó là màu đen và nó là một chú chó tha mồi vàng. Anh ta có thể sủa, chạy, ăn và ngồi.

Thuộc tính thể hiện

Một thuộc tính thể hiện là một biến Python chỉ thuộc về một đối tượng. Nó chỉ có thể truy cập trong phạm vi của đối tượng và nó được xác định bên trong hàm tạo hàm của một lớp. Ví dụ, __init __ (tự, ..).

Thuộc tính lớp

Một thuộc tính lớp là một biến Python thuộc về một lớp chứ không phải là một đối tượng cụ thể. Điều này được chia sẻ giữa tất cả các đối tượng khác của cùng một lớp và được xác định bên ngoài hàm tạo hàm __init __ (tự, Hồi), của lớp.

Sự khác biệt giữa thuộc tính lớp và phiên bản

Sự khác biệt là các thuộc tính lớp được chia sẻ bởi tất cả các trường hợp. Khi bạn thay đổi giá trị của thuộc tính lớp, nó sẽ ảnh hưởng đến tất cả các trường hợp có cùng giá trị chính xác. Thuộc tính của một thể hiện mặt khác là duy nhất cho trường hợp đó.

__Dict__ là gì?

__Dict__ là một đối tượng từ điển hoặc ánh xạ được sử dụng để lưu trữ các thuộc tính của đối tượng.

Nhưng làm thế nào để Python đối phó với các thuộc tính đối tượng và lớp bằng cách sử dụng __dict__? Vâng, mỗi trường hợp được lưu trữ trong một từ điển.

Tạo ra các lớp học và ví dụ Pythonic và không pythonic

Một cách không pythonic sẽ như thế này:

class Square:

   def __init__(self, size=0):    

       if not isinstance(size, int):    

           raise TypeError("size must be an integer") 

    

       if size < 0:          

           raise ValueError("size must be >= 0")    

 

       self.__size = size * size 

  def area(self):   

      return self.__sizet__width()

Nhược điểm xảy ra khi chúng ta cần sửa đổi mã. Cách thực hiện của nó sẽ là sử dụng các phương thức thuộc tính Getter và Setter.

class Square:

   def __init__(self, size=0):       

       self.size = size

   @property   

      def size(self):   

          return self.__size    

   @size.setter 

      def size(self, value):      

          if not isinstance(value, int):       

              raise TypeError("size must be an integer")   

          if value < 0:         

              raise ValueError("size must be >= 0")  

          self.__size = value   

   def area(self):     

       return self.__size * self.__size

Ưu điểm của việc sử dụng thuộc tính cho phép chúng tôi đính kèm mã vào thuộc tính "self.Size" và bất kỳ mã nào được gán giá trị kích thước sẽ được gọi với kích thước theo kích thước def.

Sự khác biệt giữa các thuộc tính lớp và thuộc tính thể hiện trong Python LinkedIn là gì?

Các thuộc tính lớp được chia sẻ giữa tất cả các đối tượng trong một lớp, trong khi các thuộc tính thể hiện là thuộc tính phiên bản. Một thể hiện chỉ là một tên thay thế cho một đối tượng. Các thuộc tính thể hiện được khai báo bên trong bất kỳ phương thức nào, trong khi các thuộc tính lớp được khai báo bên ngoài bất kỳ phương thức nào.. An instance is just an alternate name for an object. Instance attributes are declared inside any method, while class attributes are declared outside any method.

Sự khác biệt giữa các thể hiện và thuộc tính là gì?

Chúng tôi tạo sự khác biệt giữa các thuộc tính thể hiện và thuộc tính lớp.Các thuộc tính thể hiện là duy nhất cho mỗi đối tượng, (một thể hiện là tên khác cho một đối tượng).Instance Attributes are unique to each object, (an instance is another name for an object).

Sự khác biệt giữa thể hiện và lớp học trong Python là gì?

Các biến lớp chỉ có thể được gán khi một lớp đã được xác định. Mặt khác, các biến có thể được gán hoặc thay đổi bất cứ lúc nào.Cả hai biến lớp và biến thể hiện đều lưu trữ một giá trị trong một chương trình, giống như bất kỳ biến Python nào khác. Instance variables, on the other hand, can be assigned or changed at any time. Both class variables and instance variables store a value in a program, just like any other Python variable.

Sự khác biệt chính giữa các thuộc tính lớp và thuộc tính thể hiện là gì?

Các thuộc tính lớp Python là các biến của một lớp được chia sẻ giữa tất cả các trường hợp của nó.Chúng khác với các thuộc tính thể hiện trong các thuộc tính đó chỉ được sở hữu bởi một trường hợp cụ thể của lớp và không được chia sẻ giữa các trường hợp.instance attributes are owned by one specific instance of the class only, and are not shared between instances.