组合:
当对象之间无法继承和多继承时,此时可能需要用到组合。
比如一个水池里面有鱼和乌龟,此时肯定不能继承
组合代码如下:
class Turtle:
def __init__(self,x):
self.num = x
class Fish:
def __init__(self,x):
self.num = x
class Pool:
def __init__(self,x,y):
self.turtle = Turtle(x)
self.fish = Fish(y)
def print_num(self):
print("there are turtles %d, fish %d" % (self.turtle.num,self.fish.num))
pool = Pool(1,10)
pool.print_num()
类、类对象和实例对象
类定义后也叫类对象
比如下图的C便是类对象
类定义的属性都是静态属性,
当属性的名字和方法相同,属性会覆盖方法。如下:
为了避免名字上的冲突,大家需要遵守一些约定俗成的规矩:
1.不要试图在一个类里边定义出所有能想到的特性和方法,应该利用继承和组合机制来进行扩展
2.用不同的词性命名,如属性名用名词,方法名用动词
什么是绑定:
Python严格要求方法需要有实例才能被调用,这种限制其实就是python所谓的绑定概念
在类没有实例化时,不要调用类中的方法。如下:
之所以会出现这个error,是因为函数中没有self这个变量用来绑定真正的对象实例
可以通过使用__dict__来查看对象的属性。如下图,dd的属性是字典,内容为空
类中定义的属性和方法都是静态的,即使del CC,即将CC类删掉,CC的实例也依然可以调用CC中的方法,因为静态变量一直存在,直到程序退出才释放空间。尽量使用实例属性,不要使用类属性,类属性主要用来跟踪一些值