【发布时间】:2022-01-12 11:42:26
【问题描述】:
是否可以在python类中添加方法属性:
# something similar to this perhaps:
p.new_salary_getter = lambda(self, i) { return self.salaries[i] }
这是一个完整的示例上下文:
class Person:
def __init__(self, name: str, age: int) -> None:
self.name = name
self.age = age
p = Person("oren", 28)
for i in range(12):
if hasattr(p, "salaries"):
salaries = getattr(p, "salaries")
salaries[i] = 1000*i
else:
p.salaries = {i: 1000*i}
def getter(i: int) -> int:
return self.salaries[i]
p.get_salary = getter
p.get_salary(7)
我得到的错误:
Traceback (most recent call last):
File "main.py", line 18, in <module>
p.get_salary(7)
File "main.py", line 15, in getter
return self.salaries[i]
NameError: name 'self' is not defined
【问题讨论】:
-
您尝试此操作时发生了什么?它奏效了吗?有没有错误?
-
请用您的实际代码更新您的问题和完整的错误回溯。
-
你似乎知道
{和}在 Pyhton 中的作用,不知道你为什么决定使用它们来定义 lambda -
要将方法添加到类中,您必须将其添加到类(而不是实例):
Person.get_salary = getter。当然你必须提供self:def getter(self, i: int) -> int:
标签: python methods attributes