1
self.x和self.y是实例属性
C.count是类属性
2
在方法前加上两个_
3
在类中无法定义自己这个类
4
1
init(self[, …]) 构造器,当一个实例被创建的时候调用的初始化方法
new(cls[, …]) 在一个对象实例化的时候所调用的第一个方法,在调用__init__初始化前,先调用__new__。new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由 Python 解释器自动提供,后面的参数直接传递给__init。new__对当前类进行了实例化,并将实例返回,传给__init__的self。但是,执行了__new,并不一定会进入__init__,只有__new__返回了,当前类cls的实例,当前类的__init__才会进入。
若__new__没有正确返回当前类cls的实例,那__init__是不会被调用的,即使是父类的实例也不行,将没有__init__被调用。
__new__方法主要是当你继承一些不可变的 class 时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。
str(self):当你打印一个对象的时候,触发__str__当你使用%s格式化的时候,触发__str__str强转数据类型的时候,触发__str__
repr(self):repr是str的备胎有__str__的时候执行__str__,没有实现__str__的时候,执行__repr__repr(obj)内置函数对应的结果是__repr__的返回值当你使用%r格式化的时候 触发__repr__
len(self)定义当被len()调用时的行为(返回容器中元素的个数)。
getitem(self, key)定义获取容器中元素的行为,相当于self[key]。
setitem(self, key, value)定义设置容器中指定元素的行为,相当于self[key] = value。delitem(self, key)定义删除容器中指定元素的行为,相当于del self[key]。
get(self, instance, owner)用于访问属性,它返回属性的值。
set(self, instance, value)将在属性分配操作中调用,不返回任何内容。
del(self, instance)控制删除操作,不返回任何内容。
getattr(self, name): 定义当用户试图获取一个不存在的属性时的行为
getattribute(self, name):定义当该类的属性被访问时的行为(先调用该方法,查看是否存在该属性,若不存在,接着去调用__getattr__)
setattr(self, name, value):定义当一个属性被设置时的行为
delattr(self, name):定义当一个属性被删除时的行为。
2