黄哥Python提醒, 设置实例属性除在__init__ 方法处之外,还可以在其它地方。
知乎上有一个提问者,就碰到这样的问题,下面的代码演示回答他的问题
python中普通方法中添加属性的时候,可以不在method.()括号中添加吗?
可以在类中的实例方法设置实例属性,凡是通过self点操作符为左值的时候,都是赋值,
如果该属性存在,赋新值(绑定到新的对象),如果属性不存在,创建新的属性并将对象的引用赋值给该属性。
请看下面的代码,但建议在__init__ 方法处设置属性,但写一些测试代码时,会在其它方法中设置新的属性。
# coding:utf-8
'''
黄哥Python培训 黄哥所写
Python 3
'''
class Foo:
def set_name(self, name):
'''黄哥Python培训 黄哥所写'''
self.name = name
def get_name(self):
'''黄哥Python培训 黄哥所写'''
print(self.__dict__['name'])
print(hasattr(self, 'name'))
return self.name
p = Foo()
p.set_name("Python")
print(p.get_name())
# 输出结果
# Python
# True
# Python