有什么方法可以在分配時呼叫的方法中回傳實體屬性的名稱?
class MyClass:
def __init__(self):
self.not_relevant = 0
self.name_to_return = self.assign_own_name()
def assign_own_name(self):
return "name_to_return" # to replace
assert MyClass().name_to_return == 'name_to_return'
用例:初始化多個屬性,提供值的實體方法根據屬性名稱進行操作。
def __init__(self):
self.name_1 = do('name_1')
...
self.name_n = do('name_n')
def do(self, x):
return x # e.g. db query
uj5u.com熱心網友回復:
如果你重寫 setattr dunder 方法,你可以這樣做:
class Class:
def __init__(self):
pass
def __setattr__(self, name, value):
super(Class, self).__setattr__(name, value)
return name
_class = Class()
print(_class.__setattr__('foo', 'bar'))
print(_class.foo)
輸出:
foo
bar
同時...
_class.foo = 'bar'
...在語法上仍然是正確的,您無法從此類分配中獲得回傳值。如果賦值運算式(海象運算子)與屬性一起使用,那么這很容易,但這是不允許的
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/518062.html
標籤:Python班级变量赋值
下一篇:在類中使用列舉時如何創建物件?
