组合
所谓组合就是:把类的实例化放到一个新类里面,那么新类就把旧类组合起来了。
看例子
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)
print("乌龟:%d;鱼:%d" % (self.turtle.num,self.fish.num))
运行结果:
>>> p = Pool(1,10)
乌龟:1;鱼:10
总结:组合就是把一些没有继承关系的几个类,放在一起。
一些常用的BIF
issubclass(class,classinfo)
功能:判断class是否为classinfo的子类。是一种宽松的检查。
class A():
pass
class B(A):
pass
运行结果:
>>> issubclass(B,A)
True
>>> issubclass(A,B)
False
>>> issubclass(A,A)
True
>>> issubclass(B,B)
True
isinstance(object,classinfo)
功能:判断是不是对象是不是属于classinfo
简单的例子,接上
>>> a = A()
>>> isinstance(a,A)
True
>>> isinstance(a,B)
False
hasattr(object, name):判断对象是否含有属性name
getattr(object, name[, default]):过得对象属性name的值
setattr(object,name,value):设置属性的值,如果没有,则新设置一个。
delattr(object, name):删除对象属性name的值,如果不存在,抛出异常。
0. 什么是组成(组合)?
答:Python的继承机制很好,但是容易把代码复杂化以及依赖于隐含继承。因此,经常的时候,我们可以使用组合来代替。在Python里面组合其实很简单,直接在定义类的时候,把类放进去实例化就行。
1. 什么时候用组合,什么时候用继承?
答:根据应用的场合来哦区别。
组合用于“有一个”场景中,继承用于“是一个”场景中。例如:
水池里有抑制乌龟,天上有一只鸟,地上有一个小甲鱼,这些使用组合。
西瓜是瓜,女人是人,鲨鱼是鱼,这样的就是用继承。
2. 类对象在什么时候产生?
在类的定义完成后,类定义就变成了类对象。可以直接通过“类名.属性”或者“类名.方法名()”引用或者使用相关的属性和方法。
3. 如果类的属性和方法的名称相同,会发生?
答:如果类的属性和方法的名称相同,属性会覆盖方法。
★finished by songpl,2019.1.8