Hướng dẫn python get class by name string - python lấy lớp theo chuỗi tên

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;

__ str __ trong Python là gì?

Python __str __ [] Phương thức này trả về biểu diễn chuỗi của đối tượng. Phương thức này được gọi là hàm in [] hoặc str [] được gọi trên một đối tượng. Phương thức này phải trả về đối tượng chuỗi.This method returns the string representation of the object. This method is called when print[] or str[] function is invoked on an object. This method must return the String object.

__ Lớp __ trong Python là gì?

__ class__ là một thuộc tính trên đối tượng đề cập đến lớp mà từ đó đối tượng được tạo. một. __Class__ # Đầu ra: b. __Class__ # Đầu ra: Sau các loại dữ liệu đơn giản, giờ đây chúng ta hãy hiểu chức năng loại và __Class__ với sự trợ giúp của lớp do người dùng xác định, con người.an attribute on the object that refers to the class from which the object was created. a. __class__ # Output: b. __class__ # Output: After simple data types, let's now understand the type function and __class__ attribute with the help of a user-defined class, Human .

__ repr __ trong Python là gì?

Trong Python, __repr__ là một phương pháp đặc biệt được sử dụng để thể hiện các đối tượng của một lớp dưới dạng chuỗi.__repr__ được gọi bởi hàm tích hợp repr [].Bạn có thể xác định biểu diễn chuỗi của riêng bạn của các đối tượng lớp của bạn bằng phương thức __repr__.Các phương pháp đặc biệt là một tập hợp các phương pháp được xác định trước được sử dụng để làm phong phú các lớp của bạn.

Phương pháp nào của lớp được sử dụng để xác định tên của một lớp được biểu thị bởi đối tượng lớp dưới dạng python chuỗi?

16] Phương pháp nào của lớp.Lớp được sử dụng để xác định tên của một lớp được biểu thị bởi đối tượng lớp dưới dạng chuỗi?Giải thích: Phương thức getName [] của lớp trả về tên [dưới dạng chuỗi] của thực thể [lớp, giao diện] được biểu thị bởi đối tượng lớp này.getName[] method of the Class class returns the name [as String] of the entity [class, interface] represented by this Class object.

Bài Viết Liên Quan

Chủ Đề