Hiểu các biến lớp và các biến thể trong Python 3
Giới thiệu Lập trình hướng đối tượng cho phép biến được sử dụng ở cấp lớp hoặc cấp độ cá thể. Biến về cơ bản là các ký hiệu đứng trong một giá trị mà bạn đang sử dụng trong một chương trình. Ở cấp lớp, các biến được gọi là biến lớp , trong khi các biến ở cấp độ thể hiện được gọi là các biến ...
Giới thiệu
Lập trình hướng đối tượng cho phép biến được sử dụng ở cấp lớp hoặc cấp độ cá thể. Biến về cơ bản là các ký hiệu đứng trong một giá trị mà bạn đang sử dụng trong một chương trình.
Ở cấp lớp, các biến được gọi là biến lớp, trong khi các biến ở cấp độ thể hiện được gọi là các biến mẫu.
Khi chúng ta mong đợi các biến sẽ nhất quán trong các trường hợp, hoặc khi chúng ta muốn khởi tạo một biến, chúng ta có thể định nghĩa biến đó ở cấp lớp. Khi chúng ta dự đoán các biến sẽ thay đổi đáng kể trong các trường hợp, chúng ta có thể định nghĩa chúng ở cấp độ cá thể.
Một trong những nguyên tắc phát triển phần mềm là KHÔ nguyên tắc, viết tắt của không lặp lại chính mình. Nguyên tắc này hướng tới việc hạn chế sự lặp lại trong mã, và lập trình hướng đối tượng tuân theo nguyên tắc DRY vì nó làm giảm sự dư thừa.
Hướng dẫn này sẽ chứng minh việc sử dụng cả hai biến lớp và cá thể trong lập trình hướng đối tượng trong Python.
Biến lớp
Biến lớp được xác định trong lớp xây dựng. Bởi vì chúng được sở hữu bởi chính lớp đó, các biến lớp được chia sẻ bởi tất cả các cá thể của lớp. Do đó, chúng thường sẽ có cùng giá trị cho mỗi trường hợp trừ khi bạn đang sử dụng biến lớp để khởi tạo một biến.
Được định nghĩa bên ngoài của tất cả các phương thức, các biến lớp, theo quy ước, thường được đặt ngay bên dưới tiêu đề lớp và trước phương thức khởi tạo và các phương pháp khác.
Một biến lớp một mình trông như thế này:
class Shark: animal_type = "fish"
Ở đây, biến animal_type được gán giá trị "fish".
Chúng ta có thể tạo một thể hiện của Shark lớp học (chúng tôi sẽ gọi nó là new_shark) và in biến bằng cách sử dụng ký hiệu chấm:
shark.py
class Shark: animal_type = "fish" new_shark = Shark() print(new_shark.animal_type)
Letâ € ™ s chạy chương trình:
python shark.py Outputfish
Chương trình của chúng tôi trả về giá trị của biến.
Hãy thêm một vài biến lớp khác và in chúng ra:
shark.py
class Shark: animal_type = "fish" location = "ocean" followers = 5 new_shark = Shark() print(new_shark.animal_type) print(new_shark.location) print(new_shark.followers)
Cũng giống như với bất kỳ biến nào khác, các biến lớp có thể bao gồm bất kỳ biến nào loại dữ liệu có sẵn cho chúng tôi bằng Python. Trong chương trình này, chúng ta có các chuỗi và một số nguyên. Letâ € ™ s chạy chương trình một lần nữa với python shark.py lệnh và xem kết quả:
Outputfish ocean 5
Ví dụ về new_shark có thể truy cập tất cả các biến lớp và in chúng ra khi chúng tôi chạy chương trình.
Biến lớp cho phép chúng ta định nghĩa các biến khi xây dựng lớp. Các biến này và các giá trị liên quan của chúng sau đó có thể truy cập được đối với từng cá thể của lớp.
Các biến thể hiện
Các biến cá thể được sở hữu bởi các cá thể của lớp. Điều này có nghĩa là đối với mỗi đối tượng hoặc thể hiện của một lớp, các biến cá thể là khác nhau.
Không giống như các biến lớp, các biến cá thể được định nghĩa trong các phương thức.
bên trong Shark ví dụ lớp dưới đây, name và age là các biến mẫu:
class Shark: def __init__(self, name, age): self.name = name self.age = age
Khi chúng ta tạo ra Shark đối tượng, chúng ta sẽ phải định nghĩa các biến này, được chuyển thành các tham số trong phương thức khởi tạo hoặc phương thức khác.
class Shark: def __init__(self, name, age): self.name = name self.age = age new_shark = Shark("Sammy", 5)
Như với các biến lớp, chúng ta có thể gọi tương tự để in các biến cá thể:
shark.py
class Shark: def __init__(self, name, age): self.name = name self.age = age new_shark = Shark("Sammy", 5) print(new_shark.name) print(new_shark.age)
Khi chúng tôi chạy chương trình trên với python shark.py, chúng tôi sẽ nhận được kết quả sau:
OutputSammy 5
Đầu ra chúng ta nhận được được tạo thành từ các giá trị của các biến mà chúng ta đã khởi tạo cho cá thể đối tượng của new_shark.
Hãy tạo một đối tượng khác của Shark lớp được gọi là stevie:
shark.py
class Shark: def __init__(self, name, age): self.name = name self.age = age new_shark = Shark("Sammy", 5) print(new_shark.name) print(new_shark.age) stevie = Shark("Stevie", 8) print(stevie.name) print(stevie.age)
Các stevie đối tượng, như new_shark đối tượng chuyển các tham số cụ thể cho trường hợp đó của Shark lớp để gán các giá trị cho các biến cá thể.
Các biến cá thể, được sở hữu bởi các đối tượng của lớp, cho phép mỗi đối tượng hoặc cá thể có các giá trị khác nhau được gán cho các biến đó.
Làm việc với Class và Instance Variables Together
Biến lớp và biến mẫu thường sẽ được sử dụng cùng một lúc, vì vậy hãy xem ví dụ về điều này bằng cách sử dụng Shark lớp chúng tôi tạo ra. Các ý kiến trong chương trình phác thảo từng bước của quy trình.
shark.py
class Shark: # Class variables animal_type = "fish" location = "ocean" # Constructor method with instance variables name and age def __init__(self, name, age): self.name = name self.age = age # Method with instance variable followers def set_followers(self, followers): print("This user has " + str(followers) + " followers") def main(): # First object, set up instance variables of constructor method sammy = Shark("Sammy", 5) # Print out instance variable name print(sammy.name) # Print out class variable location print(sammy.location) # Second object stevie = Shark("Stevie", 8) # Print out instance variable name print(stevie.name) # Use set_followers method and pass followers instance variable stevie.set_followers(77) # Print out class variable animal_type print(stevie.animal_type) if __name__ == "__main__": main()
Khi chúng tôi chạy chương trình với python shark.py, chúng tôi sẽ nhận được kết quả sau:
OutputSammy ocean Stevie This user has 77 followers fish
Ở đây, chúng ta đã sử dụng cả hai biến lớp và cá thể trong hai đối tượng của Shark lớp học, sammy và stevie.
Phần kết luận
Trong lập trình hướng đối tượng, các biến ở cấp lớp được gọi là các biến lớp, trong khi các biến ở cấp đối tượng được gọi là các biến cá thể.
Sự khác biệt này cho phép chúng ta sử dụng các biến lớp để khởi tạo các đối tượng với một giá trị cụ thể được gán cho các biến, và sử dụng các biến khác nhau cho từng đối tượng với các biến mẫu.
Việc sử dụng các biến cụ thể của lớp và cá thể có thể đảm bảo rằng mã của chúng tôi tuân thủ nguyên tắc DRY để giảm sự lặp lại trong mã.