版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
属性:通过方法改造
属性代码编写时:方法的上面加上@property,方法的参数只有一个self。
属性的调用:无需加括号,使用对象.方法
属性的应用场景:对于简单的方法,当不需要传参且有返回值时,可以使用。
class Foo:
def __init__(self):
pass
@property
def start(self):
return 'start'
@property
def stop(self):
return 'stop'
f_obj = Foo()
print(f_obj.start, f_obj.stop)
'''
start stop
'''
当然,属性有公有和私有之分,私有属性的定义可以在方法的前面加上双下划线_ _。私有属性可以通过使用类中的其它方法访问:
class Foo:
def __init__(self):
pass
# 私有属性__start
@property
def __start(self):
return 'start!'
# 私有属性__stop
@property
def __stop(self):
return 'stop!'
# 通过方法访问私有属性
def get_start_stop(self):
print(self.__start)
print(self.__stop)
f_obj = Foo()
f_obj.get_start_stop()
'''
start!
stop!
'''