print(cat.__dict__) # 以字典形式打印共有与私有成员属性
print(cat._Cat__private_name) # 访问私有成员属性
# __str__()
print(cat) # 打印对象返回一段特性的话 而不是访问地址
print(str(cat))
# __len__()
print(len(cat)) # 必须定义如何度量类长度
# __iter__()
# 必须要返回迭代器
for i in cat:
print(i)
# __getitem__() __setitem__() __delitem__()
print(cat[ name ]) # 使类具有下标访问能力
cat[ name ] Tim
print(cat[ name ]) # 使类具有下标访问能力
print(cat.name)
del cat[ name ]
# print(cat.name) 删除了类成员变量 不能打印
# 数学运算 如果未定义函数则报错 如果未定义该加法类型则返回none
# __add__()
# __sub__() -
# __mul__() *
# __div__() /
# __mod__() %
# __pow__() **
cat_another Cat( Tom_another , 20)
print(cat cat_another)
cat2 cat cat_another
cat3 cat_another cat2
# cat3 cat2 cat_another 必须满足顺序传参
print(cat3)
二、类
class Cat:
这是猫类
def __init__(self, name, tail_length 10):
self.name name
self.__private_name name
self.tail_length tail_length
print( 我是一只猫 我叫%s % self.name)
def __del__(self):
print( 我被系统回收了 )
def __call__(self, *args, **kwargs):
print( Cat , args[0] args[1])
def __str__(self):
return 我是%s % self.name
def __len__(self):
return self.tail_length
def __iter__(self):
return iter([1, 2, 3, 4])
def __getitem__(self, item):
if item name :
return self.name
else:
return None
def __setitem__(self, key, value):
if key name :
self.name value
def __delitem__(self, key):
if key name :
del self.name
def __add__(self, other):
if isinstance(other, Cat):
return [self, other]
elif isinstance(other, list):
other.append(self)
return other