标签:
class Class1:__var2 = ‘静态私有‘
def __init__(self, age):self.__age = age
def function1(self):print(‘动态私有‘, self.__age)print(‘静态私有‘,Class1.__var2)
# 调用执行obj = Class1()obj.function1() //从类自身方法中,获取任何字段都行obj.__age //报错,不能获取私有动态字段Class1.__var2 //报错,不能获取私有静态字段
class Class1:def __function1(self):print(‘私有 动态方法‘)
@staticmethoddef __static_func():print(‘私有 静态方法‘)
@classmethoddef __class_func(cls):print(‘私有 类方法‘)
def show(self):self.__function1()Class1.__static_func()Class1.__class_func()
# 调用执行obj = Class1()obj.show() //从自身方法中,调用任何方法都行obj.__function1() //报错Class.__static_func() //报错Class.__class_func() //报错
class Foo:def __init__(self,name):slef.__name = name
def function1(self):print(self.__name)
obj = Foo()obj.__name //此时不能通过外部访问,报错print(_Foo__name) //可以访问
class Foo:def __init__(self,name, age):slef.name = nameself.age = age
def __str__(self):return ‘{}-{}‘.format(self.name,self.age)
obj1 = Foo(‘qiao‘,18)print(obj1)
print(ret) //若class中没有定义str方法,则输出该对象内存地址,若定义str,则输出str方法的返回值ret = str(obj1) //str也会调用该对象的__str__方法,不过不会直接输出,只会拿到返回值
class Class1:def __init__(self,name):self.name = name
def __add__(self,other):print(‘my nam:{}, her age:{}‘.format(self.name,other.age))
class Class2:
def __init(self,age):
self.age = age
obj1 = Class1(‘qiaogy‘)obj2 = Class2(18)obj1+obj2 //会执行obj1的__add__方法,obj2为other
标签:
原文地址:http://www.cnblogs.com/qiaogy/p/5818635.html