我有這樣的代碼:
class __Metadata(type):
def __init__(cls, name, bases, dict):
super().__init__(name, bases, dict)
def __setattr__(self, key, value):
super().__setattr__(key, value)
return
class SimpleData(metaclass=__Metadata):
pass
class Data1(SimpleData):
BOOK = "Book1"
SPORT = "Football"
OTHER = "Other"
當我嘗試這個時:
Data1.__setattr__("FILM", "Avengers")
我收到此錯誤:
TypeError: expected 2 arguments, got 1
我該如何解決這個問題,所以當我使用時:Data1.__getattribute__("FILM")我得到了復仇者聯盟
uj5u.com熱心網友回復:
我不知道你是否分享了完整的代碼,但是這些功能根本不相互關聯,這個setattr問題已經被問過很多次了..
您不需要自定義元類,或者SimpleData(雖然我不知道這可以做什么):
class Data1(object):
def __init__(self, attr):
super().__setattr__('attr', dict())
self.attr = attr
def __getattr__(self, name):
if name in self.attr:
return self.attr[name]
else:
return 0
def __setattr__(self, key, value):
if key in self.attr:
self.attr[key] = value
else:
super().__setattr__(key, value)
# return is irrelevant
d = Data1({"book": "Book1"})
print(d.book)
# Book1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/413704.html
標籤:
