Day 19 类的名称空间和对象的名称空间,组合,继承

01 类的名称空间和对象的名称空间

 

创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

而类有两种属性:静态属性和动态属性

 静态属性就是直接在类中定义的变量

 动态属性就是定义在类中的方法

 

类:

# 类的属性:不仅在类内部可以添加,还可以在类外部添加。

# 类名只能找到类中的变量,方法,或者(父类中的),不能找对象中的属性。

对象:

# 对象的属性:不仅在__init__里面添加,还可以在其他方法或者类外面添加。

# 对象空间中存在一个类对象指针,所以对象可以找到类中的变量以及方法

 

02 组合

 

# 组合: 将一个对象封装到另一个对象的属性中

class A():

pass

def abc(self,obj):

self.abc = obj

class B():

pass

def eat(self):

pass

 

a = A()

b = B()

a.abc(b)

a.abc  相当于对象b

a.abc.eat()

 

 

# 组合的好处:

# 1,代码更合理。

# 2, 类与类之间的耦合性增强。

 

 

03 继承

 

# 继承:单继承,多继承。

# python 类:

# 经典类:只存在python2x,不继承object的类,所以python2x既有经典类,又有新式类。

# 新式类:继承object类。python3x所有的类默认都继承object

# 单继承都一样。

# 多继承不一样:

# 经典类 :深度优先。

# 新式类 : mro 继承顺序,C3算法。

 

继承的方法:

def __init__(self,name,sex,age,mind):

Aniaml.__init__(self,name,sex,age)  # 方法一

super(Person,self).__init__(name,sex,age)  # 方法二

super().__init__(name,sex,age)  # 方法二

self.mind = mind

 

def eat(self):

super().eat()

 

 

# 继承:

#1,类与类之间的耦合性增强。

#2,节省代码。

# 3,代码更加规范化,合理性。

posted @ 2019-01-16 20:55  addit  Views(59)  Comments(0)    收藏  举报