Hướng dẫn are attributes and instance variables the same python? - các thuộc tính và biến đối tượng có phải là cùng một con trăn không?


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ụ:
>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
0 hoặc
>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
1
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
2
Thay đổi giá trị bằng cách sử dụng
>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
3 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
4.

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
4 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
4 đượ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
4 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.



Hướng dẫn are attributes and instance variables the same python? - các thuộc tính và biến đối tượng có phải là cùng một con trăn không?

Khi tạo

>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
8 trong Python, bạn sẽ thường tạo các thuộc tính có thể được chia sẻ trên mọi đối tượng của một lớp hoặc thuộc tính sẽ là duy nhất cho mỗi đối tượng của lớp.

Trong bài viết này, chúng ta sẽ thấy 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 với các ví dụ.

Trước khi chúng ta làm điều đó, hãy xem làm thế nào để tạo một lớp học trong Python.

Cách tạo một lớp học trong Python

Để tạo một lớp trong Python, chúng tôi sử dụng từ khóa

>>> std1=Student()
>>> Student.count
1
>>> std2 = Student()
>>> Student.count
2
8 theo sau là tên của lớp. Đây là một ví dụ:

class Student:
    name = "Jane"
    course = "JavaScript"

Trong mã trên, chúng tôi đã tạo một lớp gọi là

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
0 với thuộc tính
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
1 và
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
2. Bây giờ chúng ta hãy tạo các đối tượng mới từ lớp này.

class Student:
    name = "Jane"
    course = "JavaScript"
    
Student1 = Student()

print(Student1.name)
# Jane

Chúng tôi đã tạo một đối tượng mới gọi là

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
3 từ lớp
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
0.

Khi chúng tôi in

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
5, chúng tôi đã in "Jane" vào bảng điều khiển. Hãy nhớ lại rằng giá trị của Jane được lưu trữ trong một biến trong lớp gốc được tạo.

Các biến

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
1 và
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
2 này thực sự là các thuộc tính lớp. Chúng tôi sẽ thấy nhiều ví dụ hơn trong phần tiếp theo để giúp bạn hiểu rõ hơn.

Để đưa ra một định nghĩa cơ bản về cả hai thuật ngữ, các thuộc tính lớp là các biến lớp được kế thừa bởi mọi đối tượng của một lớp. Giá trị của các thuộc tính lớp vẫn giữ nguyên cho mọi đối tượng mới.class attributes are class variables that are inherited by every object of a class. The value of class attributes remain the same for every new object.

Giống như bạn sẽ thấy trong các ví dụ trong phần này, các thuộc tính lớp được xác định bên ngoài hàm

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

Mặt khác, các thuộc tính thể hiện, được xác định trong hàm

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8, là các biến lớp cho phép chúng tôi xác định các giá trị khác nhau cho từng đối tượng của một lớp.instance attributes, which are defined in the
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8 function, are class variables that allow us to define different values for each object of a class.

Đây là một ví dụ:

class Student:
    school = "freeCodeCamp.org"
    
    def __init__(self, name, course):
        self.name = name
        self.course = course
    
Student1 = Student("Jane", "JavaScript")
Student2 = Student("John", "Python")

print(Student1.name) # Jane
print(Student2.name) # John

Trong mã trên, chúng tôi đã tạo một biến trong lớp

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
0 có tên là
>>> std = Student('Bill',25)
>>> std.name
'Bill'
>>> std.age
25
>>> std.name = 'Steve'
>>> std.age = 45
>>> std.name
'Steve'
>>> std.age
45
1.

Chúng tôi đã tạo thêm hai biến nhưng trong hàm

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8 -
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
1 và
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
2 - mà chúng tôi đã khởi tạo bằng tham số self.

Tham số đầu tiên trong hàm

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8 được sử dụng để khởi tạo các tham số khác khi tạo các biến trong hàm. Bạn có thể gọi nó là bất cứ điều gì bạn muốn - theo quy ước, self chủ yếu được sử dụng.

Biến

>>> std = Student('Bill',25)
>>> std.name
'Bill'
>>> std.age
25
>>> std.name = 'Steve'
>>> std.age = 45
>>> std.name
'Steve'
>>> std.age
45
1 hoạt động như một thuộc tính lớp trong khi
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
1 và
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
2 là các thuộc tính thể hiện. Hãy phá vỡ ví dụ trên xuống để giải thích các thuộc tính thể hiện.

Student1 = Student("Jane", "JavaScript")
Student2 = Student("John", "Python")

print(Student1.name) # Jane
print(Student2.name) # John

Chúng tôi đã tạo hai đối tượng từ lớp

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
0 -
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
3 và
class Student:
    name = "Jane"
    course = "JavaScript"
3. Mỗi đối tượng này, theo mặc định, sẽ có tất cả các biến được tạo trong lớp. Nhưng mỗi đối tượng có thể có biến
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
1 và
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
2 của riêng mình vì chúng được tạo trong hàm
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8.

Bây giờ chúng ta hãy in biến

>>> std = Student('Bill',25)
>>> std.name
'Bill'
>>> std.age
25
>>> std.name = 'Steve'
>>> std.age = 45
>>> std.name
'Steve'
>>> std.age
45
1 cho mỗi đối tượng và xem điều gì sẽ xảy ra.

print(Student1.school) # freeCodeCamp.org
print(Student2.school) # freeCodeCamp.org

Cả hai đã cho chúng tôi cùng một giá trị vì biến

>>> std = Student('Bill',25)
>>> std.name
'Bill'
>>> std.age
25
>>> std.name = 'Steve'
>>> std.age = 45
>>> std.name
'Steve'
>>> std.age
45
1 là thuộc tính lớp.

Sự kết luận

Trong bài viết này, chúng tôi đã thấy cách tạo một lớp trong Python và sự khác biệt giữa các thuộc tính lớp và thể hiện.

Tóm lại, các thuộc tính lớp vẫn giữ nguyên cho mọi đối tượng và được xác định bên ngoài hàm

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8. Các thuộc tính thể hiện có phần năng động vì chúng có thể có các giá trị khác nhau trong mỗi đối tượng.class attributes remain the same for every object and are defined outside the
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8 function. Instance attributes are somewhat dynamic because they can have different values in each object.

Các thuộc tính thể hiện được xác định trong hàm

class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8.are defined in the
class Student:
    def __init__(self, name, age): 
        self.name = name
        self.age = age
8 function.

Mã hóa hạnh phúc!



Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Các thuộc tính và biến thể hiện có giống nhau không?

Các biến thể hiện chỉ có phạm vi trong một lớp/đối tượng cụ thể và luôn được giả định với một lớp cụ thể. Các thuộc tính được sử dụng làm tin nhắn trên bảng thông báo để các lớp có quyền truy cập vào một yêu cầu, trang, phiên hoặc ứng dụng cụ thể có thể sử dụng.

Có phải các thuộc tính và biến giống nhau trong Python?

Một thuộc tính hoạt động giống như một biến ở chỗ nó có thể tham chiếu bất kỳ đối tượng nào mà không phải được khai báo là một loại cụ thể. Các thuộc tính không được xác định. Bây giờ chúng tôi có một đối tượng tùy chỉnh ví dụ, có thể chứng minh ý tưởng rằng các biến lưu trữ tham chiếu đến các đối tượng.. Attributes are untyped. Now we have an example custom object, it is possible to demonstrate the idea that variables store references to objects.

Là các thuộc tính của các biến thể hiện?

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.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.Được xác định trực tiếp bên trong một lớp.Instance attributes are attributes or properties attached to an instance of a class. Instance attributes are defined in the constructor. Defined directly inside a class.

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

Sự khác biệt giữa các 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 đó.class attributes are shared by all instances. When you change the value of a class attribute, it will affect all instances that share the same exact value. The attribute of an instance on the other hand is unique to that instance.