我寫了一個類人用元類法術。在元類中,我改變了一個屬性,這是可以的,但是如果我想爲另一個操作使用這個新的值,它不起作用,它使用以前的值。 我該如何解決這個問題?蟒蛇元類不記得了新的價值
class Spell(type):
def __new__(cls,classname,super,classdict):
def pph(hours): return lambda self : classdict['pay_per_hour'] * hours
classdict['pay_per_hour'] = 12
classdict['day_salary'] = pph(8)
return type.__new__(cls, classname, super, classdict)
class Person(metaclass=Spell):
def __init__(self,name,lastname,bday):
self.name = name
self.lastname = lastname
self.bday = bday
def get_name(self):
return self._name
def get_lastname(self):
return self._lastname
def get_bday(self):
return self._bday
def __repr__(self):
return "name: {0}, lastname: {1}, bday: {2}".format(self.name,self.lastname,self.bday)
if __name__ == "__main__":
persona4 = Person("lugdfgca","djfosd","16 febbraio 85")
print(persona4.pay_per_hour)
print(persona4.day_salary())
persona4.pay_per_hour=15
print(persona4.pay_per_hour)
print(persona4.day_salary())
輸出是
12
96
15
96
但96是12 * 8不是15 * 8,爲什麼呢?錯誤在哪裏?
你需要修復您的壓痕 –
什麼是你要使用元類的原因嗎?在你的例子中,沒有什麼東西比普通的基類更容易。 –
我不得不使用元類爲大學的考試,這是在準備考試 – fege