Nếu bạn thực sự muốn truy xuất các lớp bạn thực hiện với một chuỗi, bạn nên lưu trữ [hoặc được nói đúng, tham khảo] chúng trong một từ điển. Rốt cuộc, điều đó cũng sẽ cho phép đặt tên cho các lớp học của bạn ở cấp độ cao hơn và tránh phơi bày các lớp không mong muốn.
Ví dụ, từ một trò chơi trong đó các lớp diễn viên được xác định trong Python và bạn muốn tránh các lớp chung khác được tiếp cận bằng đầu vào của người dùng.
Một cách tiếp cận khác [như trong ví dụ dưới đây] sẽ tạo ra một lớp hoàn toàn mới, nắm giữ
=======
o
o
=======
Hello World!
=======
0
1
--
2
6
--
Done experiment!
0 ở trên. Cái này sẽ:- Cho phép nhiều chủ sở hữu lớp được thực hiện cho tổ chức dễ dàng hơn [như, một cho các lớp diễn viên và một cho các loại âm thanh];
- Thực hiện sửa đổi cho cả người giữ và các lớp được tổ chức dễ dàng hơn;
- Và bạn có thể sử dụng các phương thức lớp để thêm các lớp vào dict. [Mặc dù sự trừu tượng dưới đây không thực sự cần thiết, nhưng nó chỉ đơn thuần là ... "Minh họa"].
Example:
class ClassHolder:
def __init__[self]:
self.classes = {}
def add_class[self, c]:
self.classes[c.__name__] = c
def __getitem__[self, n]:
return self.classes[n]
class Foo:
def __init__[self]:
self.a = 0
def bar[self]:
return self.a + 1
class Spam[Foo]:
def __init__[self]:
self.a = 2
def bar[self]:
return self.a + 4
class SomethingDifferent:
def __init__[self]:
self.a = "Hello"
def add_world[self]:
self.a += " World"
def add_word[self, w]:
self.a += " " + w
def finish[self]:
self.a += "!"
return self.a
aclasses = ClassHolder[]
dclasses = ClassHolder[]
aclasses.add_class[Foo]
aclasses.add_class[Spam]
dclasses.add_class[SomethingDifferent]
print aclasses
print dclasses
print "======="
print "o"
print aclasses["Foo"]
print aclasses["Spam"]
print "o"
print dclasses["SomethingDifferent"]
print "======="
g = dclasses["SomethingDifferent"][]
g.add_world[]
print g.finish[]
print "======="
s = []
s.append[aclasses["Foo"][]]
s.append[aclasses["Spam"][]]
for a in s:
print a.a
print a.bar[]
print "--"
print "Done experiment!"
Điều này trả lại cho tôi:
=======
o
o
=======
Hello World!
=======
0
1
--
2
6
--
Done experiment!
Một thử nghiệm thú vị khác để làm với những điều đó là thêm một phương pháp làm dấy vào
=======
o
o
=======
Hello World!
=======
0
1
--
2
6
--
Done experiment!
1 để bạn không bao giờ mất tất cả các lớp bạn đã làm:^]CẬP NHẬT: Cũng có thể sử dụng một bộ trang trí làm tốc ký. It is also possible to use a decorator as a shorthand.
class ClassHolder:
def __init__[self]:
self.classes = {}
def add_class[self, c]:
self.classes[c.__name__] = c
# -- the decorator
def held[self, c]:
self.add_class[c]
# Decorators have to return the function/class passed [or a modified variant thereof], however I'd rather do this separately than retroactively change add_class, so.
# "held" is more succint, anyway.
return c
def __getitem__[self, n]:
return self.classes[n]
food_types = ClassHolder[]
@food_types.held
class bacon:
taste = "salty"
@food_types.held
class chocolate:
taste = "sweet"
@food_types.held
class tee:
taste = "bitter" # coffee, ftw ;]
@food_types.held
class lemon:
taste = "sour"
print[food_types['bacon'].taste] # No manual add_class needed! :D
Python nổi tiếng để hỗ trợ lập trình hướng đối tượng bao gồm các khái niệm về các lớp và đối tượng. Nó cung cấp một cấu trúc chương trình rõ ràng và dễ dàng sửa đổi mã. Vì lớp có thể chia sẻ, mã có thể được sử dụng lại và cũng cung cấp các lợi thế khác nhau của sự trừu tượng, đóng gói và đa hình. Trong bài viết này, chúng tôi sẽ nghiên cứu lớp Python và làm thế nào Python có được tên lớp của một trường hợp với các ví dụ và đầu ra. Bắt đầu nào!
Lớp học trong Python là gì?
Các lớp là tâm điểm của OOP và các đối tượng được tạo bởi các lớp. Lớp có thể được định nghĩa là mô tả hoặc định nghĩa của đối tượng. Lớp mô tả những gì đối tượng sẽ là nhưng hoàn toàn tách biệt với chính đối tượng.focal point of OOP and objects are created by Classes. The class can be defined as the description or the definition of the object. The class describes what the object will be but is totally separated from the object itself.
Ngoài ra, một lớp duy nhất được sử dụng để mô tả nhiều đối tượng. Ví dụ, chúng tôi tạo ra một bản thiết kế trước khi xây dựng ngôi nhà. Tương tự, cùng một bản thiết kế có thể được sử dụng cho các ngôi nhà khác nhau được xây dựng. Lập trình hoạt động trong dòng chảy trong đó lớp đầu tiên được xác định để mô tả thêm đối tượng. Mỗi lớp có một tên, và thuộc tính và hành vi riêng của nó.attribute and behavior.
Phương pháp này là một thuật ngữ khác được sử dụng trong các lớp. Phương pháp là các chức năng trong các lớp. Họ có một khối mã cụ thể có thể được gọi và thực hiện một tác vụ nhất định và trả về các giá trị. Cú pháp của lớp được đưa ra bởi:
Cú pháp
class ClassName: # Statement1 . . . # StatementN
Ví dụ:
class Fruit: def __init__[self, name, color]: self.name = name self.color = color def func[self]: print["Fruit is " + self.name] f1 = Fruit["Apple", "Red"] f1.func[]
Output:
Các phương pháp để có được tên lớp trong Python
Dưới đây là 3 phương pháp mà bạn có thể lấy tên lớp trong Python: & nbsp;
1] Sử dụng __Class __.__ Tên__
Phương pháp đầu tiên và dễ dàng nhất để có được một tên lớp trong Python là bằng cách sử dụng thuộc tính __ class__ mà về cơ bản đề cập đến lớp của đối tượng chúng ta muốn truy xuất. Ở đây chúng tôi kết hợp thuộc tính với thuộc tính __name__ để xác định tên lớp của đối tượng hoặc thể hiện. __name__ là biến đặc biệt trong Python cung cấp tên của mô -đun hiện tại nơi nó được sử dụng.__class__ property which basically refers to the class of the object we wish to retrieve. Here we combine the property with __name__ property to identify the class name of the object or instance. __name__ is the special variable in python that provides the name of the current module where it is used.
Lưu ý rằng để hiển thị tên lớp, bạn phải tạo đối tượng cho cô gái đó và hiển thị tên của nó bằng class.name. Kiểm tra ví dụ dưới đây để hiểu rõ hơn về các phương pháp này.class.name. Check out the below example for a better understanding of these methods.
Ví dụ:
class fruit: def __init__[self, fruit]: self.fruit = fruit a = fruit["orange"] print [a.__class__] print [a.__class__.__name__]
Output:
fruit
Các phương pháp để có được tên lớp trong Python
Dưới đây là 3 phương pháp mà bạn có thể lấy tên lớp trong Python: & nbsp;type[] method which is the in-built python method to find the type or the class name of the object. You have to merge the type[] function with the __name__ variable and get the name of the class as shown in the below example:
Ví dụ:
class fruit: def __init__[self, fruit]: self.fruit = fruit a = fruit["orange"] print [type[a].__name__]
Output:
Các phương pháp để có được tên lớp trong Python
Dưới đây là 3 phương pháp mà bạn có thể lấy tên lớp trong Python: & nbsp;__qualname__ attribute instead of __name__ attribute to get the name of the qualified object.
Ví dụ:
class Fruit: def __init__[self, name, b]: self.name = name self.vegetable = self.Vegetables[b] class Vegetables: def __init__[self, vegetable]: self.vegetable = vegetable fruit = Fruit["orange", ['potatoes']] print[fruit.vegetable.__class__.__name__] print[fruit.vegetable.__class__.__qualname__]
Output:
Vegetables Fruit.Vegetables
Các phương pháp để có được tên lớp trong Python
Dưới đây là 3 phương pháp mà bạn có thể lấy tên lớp trong Python: & nbsp;