[英]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.