Hướng dẫn how do you define a class variable in python? - làm thế nào để bạn xác định một biến lớp trong python?

Trong lập trình hướng đối tượng, khi chúng tôi thiết kế một lớp, chúng tôi sử dụng các biến thể hiện và biến lớp.

Trong lớp, các thuộc tính có thể được xác định thành hai phần:

  • Các biến thể hiện: Nếu giá trị của một biến thay đổi từ đối tượng này sang đối tượng khác, thì các biến đó được gọi là biến thể hiện.: If the value of a variable varies from object to object, then such variables are called instance variables.
  • Các biến lớp: Một biến lớp là một biến được khai báo bên trong lớp, nhưng ngoài bất kỳ phương thức thể hiện nào hoặc & nbsp; ________ 19 & nbsp; phương thức.: A class variable is a variable that is declared inside of class, but outside of any instance method or 
    Emma 10 ABC School
    Jessa 20 ABC School 
    9 method.

Sau khi đọc bài viết này, bạn sẽ học::

  • Cách tạo và truy cập các biến lớp
  • Sửa đổi các giá trị của một biến lớp
  • Biến trường hợp so với các biến lớp
  • Hành vi của một biến lớp trong kế thừa

Một biến lớp trong Python là gì?

Nếu giá trị của một biến không thay đổi từ đối tượng sang đối tượng, các loại biến đó được gọi là biến lớp hoặc biến tĩnh.value of a variable is not varied from object to object, such types of variables are called class variables or static variables.

Các biến lớp được chia sẻ bởi tất cả các trường hợp của một lớp. Không giống như biến thể hiện, giá trị của biến lớp không được thay đổi từ đối tượng này sang đối tượng khác,shared by all instances of a class. Unlike instance variable, the value of a class variable is not varied from object to object,

Trong Python, các biến lớp được khai báo khi một lớp được xây dựng. Chúng không được xác định bên trong bất kỳ phương thức nào của một lớp vì chỉ có một bản sao của biến tĩnh sẽ được tạo và chia sẻ giữa tất cả các đối tượng của lớp.

Ví dụ, trong lớp học sinh, chúng ta có thể có các biến thể hiện khác nhau như tên và số cuộn vì mỗi tên và số cuộn của học sinh là khác nhau.

Nhưng, nếu chúng tôi muốn đưa tên trường vào lớp học sinh, chúng tôi phải sử dụng biến lớp thay vì biến thể hiện vì tên trường giống nhau cho tất cả học sinh. Vì vậy, thay vì duy trì bản sao riêng biệt trong mỗi đối tượng, chúng ta có thể tạo một biến lớp sẽ giữ tên trường để tất cả học sinh (đối tượng) có thể chia sẻ nó.

Chúng tôi có thể thêm bất kỳ số lượng biến lớp trong một lớp.

Hướng dẫn how do you define a class variable in python? - làm thế nào để bạn xác định một biến lớp trong python?
Hiểu các biến lớp

Tạo các biến lớp

Một biến lớp được khai báo bên trong lớp, nhưng ngoài bất kỳ phương thức ví dụ nào hoặc & nbsp; ________ 19 & nbsp; phương thức.

Theo quy ước, thông thường nó được đặt ngay bên dưới tiêu đề lớp và trước phương thức cấu trúc và các phương thức khác.

Example::

class Student:
    # Class variable
    school_name = 'ABC School '
    
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

# create first object
s1 = Student('Emma', 10)
print(s1.name, s1.roll_no, Student.school_name)
# access class variable

# create second object
s2 = Student('Jessa', 20)
# access class variable
print(s2.name, s2.roll_no, Student.school_name)

Đầu ra

Emma 10 ABC School
Jessa 20 ABC School 

Trong ví dụ trên, chúng tôi đã tạo biến lớp

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
1 và truy cập nó bằng tên đối tượng và tên lớp.

Lưu ý: Giống như các biến thông thường, các biến lớp có thể lưu trữ dữ liệu thuộc bất kỳ loại nào. Chúng ta có thể sử dụng danh sách Python, Tuple Python và Dictiony Python như một biến lớp.: Like regular variables, class variables can store data of any type. We can use Python list, Python tuple, and Python dictionary as a class variable.

Truy cập các biến lớp

Chúng ta có thể truy cập các biến tĩnh bằng tên lớp hoặc theo tham chiếu đối tượng, nhưng nên sử dụng tên lớp.

Trong Python, chúng ta có thể truy cập biến lớp ở những nơi sau

  • Truy cập bên trong hàm tạo bằng cách sử dụng tham số
    class Student:
        # Class variable
        school_name = 'ABC School '
    
        # constructor
        def __init__(self, name):
            self.name = name
            # access class variable inside constructor using self
            print(self.school_name)
            # access using class name
            print(Student.school_name)
    
    # create Object
    s1 = Student('Emma')
    2 hoặc tên lớp.
  • Truy cập biến lớp bên trong Phương thức thể hiện bằng cách sử dụng tên của lớp
  • Truy cập từ bên ngoài lớp bằng cách sử dụng tham chiếu đối tượng hoặc tên lớp.

Ví dụ 1: Biến lớp truy cập trong hàm tạo: Access Class Variable in the constructor

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')

Đầu ra

ABC School 
ABC School

Trong ví dụ trên, chúng tôi đã tạo biến lớp

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
1 và truy cập nó bằng tên đối tượng và tên lớp.: Access Class Variable in Instance method and outside class

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

    # Instance method
    def show(self):
        print('Inside instance method')
        # access using self
        print(self.name, self.roll_no, self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma', 10)
s1.show()

print('Outside class')
# access class variable outside class
# access using object reference
print(s1.school_name)

# access using class name
print(Student.school_name)

Đầu ra

Inside instance method
Emma 10 ABC School 
ABC School 

Outside class
ABC School 
ABC School 

Trong ví dụ trên, chúng tôi đã tạo biến lớp

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
1 và truy cập nó bằng tên đối tượng và tên lớp.

Lưu ý: Giống như các biến thông thường, các biến lớp có thể lưu trữ dữ liệu thuộc bất kỳ loại nào. Chúng ta có thể sử dụng danh sách Python, Tuple Python và Dictiony Python như một biến lớp.

Truy cập các biến lớp

Chúng ta có thể truy cập các biến tĩnh bằng tên lớp hoặc theo tham chiếu đối tượng, nhưng nên sử dụng tên lớp.: We should change the class variable’s value using the class name only.

Trong Python, chúng ta có thể truy cập biến lớp ở những nơi sau

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

    # Instance method
    def show(self):
        print(self.name, self.roll_no, Student.school_name)

# create Object
s1 = Student('Emma', 10)
print('Before')
s1.show()

# Modify class variable
Student.school_name = 'XYZ School'
print('After')
s1.show()

Output::

Before
Emma 10 ABC School 

After
Emma 10 XYZ School

Note::

Truy cập bên trong hàm tạo bằng cách sử dụng tham số

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
2 hoặc tên lớp.

Example::

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name, roll_no):
        self.name = name
        self.roll_no = roll_no

# create Objects
s1 = Student('Emma', 10)
s2 = Student('Jessa', 20)

print('Before')
print(s1.name, s1.roll_no, s1.school_name)
print(s2.name, s2.roll_no, s2.school_name)

# Modify class variable using object reference
s1.school_name = 'PQR School'
print('After')
print(s1.name, s1.roll_no, s1.school_name)
print(s2.name, s2.roll_no, s2.school_name)

Output::

Before
Emma 10 ABC School 
Jessa 20 ABC School 

After
Emma 10 PQR School
Jessa 20 ABC School 

Truy cập biến lớp bên trong Phương thức thể hiện bằng cách sử dụng tên của lớp

Truy cập từ bên ngoài lớp bằng cách sử dụng tham chiếu đối tượng hoặc tên lớp.

Ví dụ 1: Biến lớp truy cập trong hàm tạo

Ví dụ 2: Biến lớp truy cập trong phương thức ví dụ và lớp bên ngoài

  • Trong ví dụ này, chúng tôi đã truy cập biến lớp
    class Student:
        # Class variable
        school_name = 'ABC School '
    
        # constructor
        def __init__(self, name):
            self.name = name
            # access class variable inside constructor using self
            print(self.school_name)
            # access using class name
            print(Student.school_name)
    
    # create Object
    s1 = Student('Emma')
    1 bằng tên lớp và từ khóa
    class Student:
        # Class variable
        school_name = 'ABC School '
    
        # constructor
        def __init__(self, name):
            self.name = name
            # access class variable inside constructor using self
            print(self.school_name)
            # access using class name
            print(Student.school_name)
    
    # create Object
    s1 = Student('Emma')
    2 bên trong một phương thức.
    : Instance variable’s value varies from object to object. Instance variables are not shared by objects. Every object has its own copy of the instance attribute
  • Sửa đổi các biến lớp: A class variable is a variable that is declared inside of class, but outside of any instance method or 
    Emma 10 ABC School
    Jessa 20 ABC School 
    9 method. Class variables are shared by all instances of a class.

Nói chung, chúng tôi gán giá trị cho một biến lớp bên trong khai báo lớp. Tuy nhiên, chúng ta có thể thay đổi giá trị của biến lớp trong lớp hoặc bên ngoài lớp.: Instance variables in Python with Examples

Lưu ý: Chúng ta nên thay đổi giá trị biến lớp chỉ bằng tên lớp.Thí dụ
Đó là thực tiễn tốt nhất để sử dụng tên lớp để thay đổi giá trị của biến lớp. Bởi vì nếu chúng ta cố gắng thay đổi giá trị biến lớp của lớp bằng cách sử dụng một đối tượng, một biến thể hiện mới được tạo cho đối tượng cụ thể đó, trong đó làm mờ các biến lớp.Các biến lớp được chia sẻ bởi tất cả các trường hợp.
Các biến thể hiện được khai báo bên trong hàm tạo, tức là phương thức
Emma 10 ABC School
Jessa 20 ABC School 
9.
Các biến lớp được khai báo bên trong định nghĩa lớp nhưng ngoài bất kỳ phương thức và hàm tạo thể nào.
Nó được tạo ra khi một thể hiện của lớp được tạo.Nó được tạo ra khi chương trình bắt đầu thực thi.
Các thay đổi được thực hiện cho các biến này thông qua một đối tượng sẽ không phản ánh trong một đối tượng khác.Các thay đổi được thực hiện trong biến lớp sẽ phản ánh trong tất cả các đối tượng.
Biến lớp so với các biến thể hiện

Example::

Hãy cùng xem ví dụ để tạo biến lớp và biến thể hiện.

Emma 10 ABC School
Jessa 20 ABC School 
0

Output::

Emma 10 ABC School
Jessa 20 ABC School 
1

Các biến lớp trong kế thừa

Như bạn đã biết, chỉ có một bản sao của biến lớp sẽ được tạo và chia sẻ giữa tất cả các đối tượng của lớp đó.

Khi chúng ta sử dụng kế thừa, tất cả các biến và phương pháp của lớp cơ sở có sẵn cho lớp con. Trong những trường hợp như vậy, chúng ta cũng có thể thay đổi giá trị của biến lớp lớp cha trong lớp con.

Chúng ta có thể sử dụng tên lớp cha hoặc lớp con để thay đổi giá trị của biến lớp lớp cha trong lớp con.

Thí dụ

Emma 10 ABC School
Jessa 20 ABC School 
2

Đầu ra

Emma 10 ABC School
Jessa 20 ABC School 
3

Điều gì sẽ xảy ra nếu cả lớp con và lớp cha có cùng tên biến lớp. Trong trường hợp này, lớp con sẽ không kế thừa biến lớp của lớp cơ sở. Vì vậy, nên tạo một biến lớp riêng cho lớp con thay vì kế thừa biến lớp cơ sở.child class and parent class has the same class variable name. In this case, the child class will not inherit the class variable of a base class. So it is recommended to create a separate class variable for child class instead of inheriting the base class variable.

Example::

Emma 10 ABC School
Jessa 20 ABC School 
4

Output::

Emma 10 ABC School
Jessa 20 ABC School 
5

Sử dụng sai các biến lớp

Trong Python, chúng ta nên sử dụng đúng biến lớp vì tất cả các đối tượng chia sẻ cùng một bản sao. Do đó, nếu một trong các đối tượng sửa đổi giá trị của biến lớp, thì tất cả các đối tượng bắt đầu đề cập đến bản sao mới.

Ví dụ,

Thí dụ

Emma 10 ABC School
Jessa 20 ABC School 
6

Đầu ra

Emma 10 ABC School
Jessa 20 ABC School 
7

Điều gì sẽ xảy ra nếu cả lớp con và lớp cha có cùng tên biến lớp. Trong trường hợp này, lớp con sẽ không kế thừa biến lớp của lớp cơ sở. Vì vậy, nên tạo một biến lớp riêng cho lớp con thay vì kế thừa biến lớp cơ sở.

Sử dụng sai các biến lớp

Trong Python, chúng ta nên sử dụng đúng biến lớp vì tất cả các đối tượng chia sẻ cùng một bản sao. Do đó, nếu một trong các đối tượng sửa đổi giá trị của biến lớp, thì tất cả các đối tượng bắt đầu đề cập đến bản sao mới.

Ví dụ,

Trong ví dụ trên, biến thể hiện

class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
7 là duy nhất cho mỗi người chơi. Biến lớp
class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
8 và
class Student:
    # Class variable
    school_name = 'ABC School '

    # constructor
    def __init__(self, name):
        self.name = name
        # access class variable inside constructor using self
        print(self.school_name)
        # access using class name
        print(Student.school_name)

# create Object
s1 = Student('Emma')
9 có thể được truy cập và sửa đổi bởi bất kỳ đối tượng nào.

Emma 10 ABC School
Jessa 20 ABC School 
8

Làm thế nào để bạn xác định một biến lớp?

Các biến lớp còn được gọi là các biến tĩnh được khai báo với từ khóa tĩnh trong một lớp, nhưng bên ngoài một phương thức, hàm tạo hoặc một khối.Sẽ chỉ có một bản sao của mỗi biến lớp cho mỗi lớp, bất kể có bao nhiêu đối tượng được tạo từ nó.declared with the static keyword in a class, but outside a method, constructor or a block. There would only be one copy of each class variable per class, regardless of how many objects are created from it.

Làm thế nào để bạn xác định một lớp trong Python đưa ra ví dụ?

Các lớp và đối tượng Python..
Tạo một lớp học.Để tạo một lớp, hãy sử dụng lớp từ khóa: ....
Tạo đối tượng.Bây giờ chúng ta có thể sử dụng lớp có tên MyClass để tạo các đối tượng: ....
Tham số tự.....
Sửa đổi thuộc tính đối tượng.....
Xóa thuộc tính đối tượng.....
Xóa đối tượng ..