在学习了python的基本语法及其面向过程编程后,进而学习python的面向对象的编程。如果有java或者c++的一点面向对象编译的底子,学习起来会轻松了不少。
#coding:utf-8
#python 3.0
class A: # 定义了A类
#代码段
class B: # 定义了B类
#代码段
class C(A,B): # C类继承A类和B类中的数据成员和函数
#代码段
class Scale:
def check(self):
if self.count_person > 500: # 判断公司人数是否大于500人
return "%s is a super company.\n" %self.name
else:
return "%s is a small company.\n" %self.name
class Detail:
def show(self,scale):
print("There are %s employes working in %s."%(scale,self.count_person))
class Company(Scale,Detail):
def __init__(self,name,count): # 构造函数给数据赋值
self.name = name
self.count_person = count
if __name__=="__main__":
MY_company = Company("Google",75000)
company_scale = MY_company.check()
MY_company.show(company_scale)
'''运行结果:
There are Google is a super company.
employes working in 75000.
'''
#coding:utf-8
#python 3.0
class music:
def show(self):
print("music")
class folk(music):
def show(self):
print("folk")
class lacation(music):
def show(self):
print("lacation")
class Breeze(lacation,folk):
def illustrate(self):
folk.show(self)
lacation.show(self)
breeze = Breeze()
#breeze.show() # 运行结果: location
#breeze.illustrate() # 运行结果: folk location
python 运行后编译器并没有报错,经过查资料翻博客之后发现,python在处理这类问题时使用的是MRO算法。有兴趣的看这个博客 http://python.jobbole.com/85685/
嗯,不懂。 不过不影响。
我们将Breeze类的定义修改一下,class Breeze(folk,loaction), 运行show函数之后发现,输出的是folk,证明python自动将二义性问题处理了。
而派生类继承基类,如果遇见二义性问题,会按继承的先后顺序来处理。就正如location在folk前,执行location的show函数,反之相同。