Hướng dẫn get class name from method python - lấy tên lớp từ phương thức python

Tôi bắt đầu làm một cái gì đó hơi giống nhau, về cơ bản, ý tưởng đã kiểm tra bất cứ khi nào một phương pháp trong một lớp cơ sở đã được thực hiện hoặc không trong một lớp phụ. Hóa ra cách ban đầu tôi làm điều đó, tôi không thể phát hiện ra khi một lớp trung gian thực sự thực hiện phương pháp.

Cách giải quyết của tôi cho nó thực sự khá đơn giản; Đặt một thuộc tính phương thức và kiểm tra sự hiện diện của nó sau. Đây là một sự đơn giản hóa toàn bộ:attribute and testing its presence later. Here's an simplification of the whole thing:

class A():
    def method(self):
        pass
    method._orig = None # This attribute will be gone once the method is implemented

    def run_method(self, *args, **kwargs):
        if hasattr(self.method, '_orig'):
            raise Exception('method not implemented')
        self.method(*args, **kwargs)

class B(A):
    pass

class C(B):
    def method(self):
        pass

class D(C):
    pass

B().run_method() # ==> Raises Exception: method not implemented
C().run_method() # OK
D().run_method() # OK

Cập nhật: Trên thực tế, hãy gọi method() từ run_method() (không phải là tinh thần?) Và nó đã vượt qua tất cả các đối số không được sửa đổi cho phương thức.

P.S .: Câu trả lời này không trả lời trực tiếp câu hỏi. IMHO Có hai lý do người ta muốn biết lớp nào đã xác định một phương thức; Đầu tiên là chỉ các ngón tay vào một lớp trong mã gỡ lỗi (chẳng hạn như trong xử lý ngoại lệ) và thứ hai là xác định xem phương pháp đã được thực hiện lại (trong đó phương thức là một sơ khai có nghĩa là được thực hiện bởi người lập trình viên). Câu trả lời này giải quyết trường hợp thứ hai theo một cách khác.

Có những kịch bản mà bạn có các lớp lồng nhau trong chương trình và muốn có được một tên lớp. Trong tình huống này, bạn có thể sử dụng thuộc tính __qualName__ thay vì thuộc tính __name__ để lấy tên của đối tượng đủ điều kiện.

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;

__ 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.

Getattr Python là gì?

Chức năng Python getAttr ().Hàm python getAttr () được sử dụng để nhận giá trị của thuộc tính của một đối tượng và nếu không tìm thấy thuộc tính nào của đối tượng đó, giá trị mặc định được trả về.used to get the value of an object's attribute and if no attribute of that object is found, default value is returned.