簡體   English   中英

在python的類中獲取實例的名稱

[英]Grabbing the name of an instance in a class in python

我有一個這樣設置的課程`

class Vehicle:
    def __init__(self, seats, wheels, engine):
        self.seats = seats
        self.wheels = wheels
        self.engine = engine

我得到了這樣的一個實例

porsche = Vehicle(2, 4, "gas")

我不知道的是如何使用實例“ porsche”將“ __init__ ”部分中每個自我初始化的名稱寫到屏幕上。

所需的輸出是這樣的句子:

"I have a Vehicle. It has seats, wheels, and an engine."

那里的座位輪和發動機都來自該班。

我檢索了Vehicle並使用以下命令將其放入字符串中:

porsche.__class__.__name__

但是對於我的一生,無法弄清楚如何獲得每個self. 賓語

您的問題似乎在詢問如何知道對象的屬性名稱。 對於簡單對象(無插槽),則足以檢查__dict__ 所以從這樣的事情開始:

def show(x):
    return "I have a {}. It has {}".format(type(x).__name__, ", ".join(x.__dict__))

然后

>>> show(Vehicle(1, 1, 1))
'I have a Vehicle. It has seats, wheels, engine'

您可以使用obj.__dict__來訪問實例的字段/成員/數據屬性

您是否正在尋找這樣的東西?

class Vehicle:
    def __init__(self, seats, wheels, engine):
        self.seats = seats
        self.wheels = wheels
        self.engine = engine

    def description(self):
        # 'Vehicle'
        name = self.__class__.__name__

        # ['seats', 'wheels', 'engine']
        field_names = self.__dict__.keys()

        return "I have a %s. It has these fields: %s" % (
            name, ', '.join(field_names))


porsche = Vehicle(2, 4, "gas")
print(porsche.description())

輸出:

I have a Vehicle. It has these fields: engine, wheels, seats

請注意,這些字段名稱將采用任意順序(在Python中字典是無序的),而不一定是您在__init__()定義的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM