1.hs._Province__str() # python中访问私有方法的途径
2.类中的可读和可写特性:(推荐此方法用于访问和修改私有字段)
使用@property(特性)和@bars.setter两种装饰器即可,python3中可以不用继承object,继承或者不继承都必须有@bars.setter才能修改属性
class Province(object):
# 类属性(静态字段)
name = '最多的省份' # 静态字段,由类直接调用
def __init__(self, name, capital, leader, flag):
# 动态字段
self.name = name
self.capital = capital
self.leader = leader
self.__myset = flag # 私有属性,只能在类中访问
# 只读
@property # 对象的特性 对象.bars调用即可
def bars(self):
print(self.__myset)
# 可改
@bars.setter
def bars(self, value):
self.__myset = value
hs = Province('日本', '东京', '小泉', True)
# 输出结果为True
hs.bars
# 修改属性值
hs.bars = False
# 修改成功,输出结果为False
hs.bars
3.析构函数和特殊的__call__方法
class Foo:
def __init__(self):
pass
# 此方法是销毁对象的操作,是对象生命周期的最后步骤
def __del__(self):
print('销毁了')
def go(self):
print('Go')
def __call__(self, *args, **kwargs):
print('call')
f1 = Foo()
f1.go()
f1() # 当对象作为函数被调用,python会去执行call方法,如果没有写call方法,会报错:'Foo' object is not callable