python类外属性和方法
记得那是一个风和日丽的下午,正在学习cv的源码,突然看到
self.data_loader[ln].dataset.sample_name = np.arange(len(score)) # ?
sample_name 哪来的 ???
- python 没有匿名对象
- python 居然可以类外添加属性和方法?
- 世界观差点崩塌。。。
class People:
def __init__(self, name, age,) -> None:
# 类内没有定义 gender 这个属性
self.name = name
self.age = age
# 类内没有定义showMethod方法
def method(self):
pass
def showMethod(str):
print(str)
if __name__ == "__main__":
p = People("alex", 18)
# 实例化对象添加gender属性
p.gender = "man"
# alex: 18,man
print("{}: {},{}".format(p.name, p.age, p.gender))
# 实例化对象添加showMethod方法
p.showAge = showMethod
# 18
p.showAge(p.age)
# People类 添加gender属性
People.gender = "woman"
# woman
print(People.gender)
People.showName = showMethod
# AttributeError: type object 'People' has no attribute 'name'
# People.showName(People.name) # erro
# woman
People.showName(People.gender)
result:
alex: 18,man
18
woman
woman