Day7 子类调用父类的方法supper 绑定方法与非绑定方法

supper:可以利用supper来重用父类的方法,可以不用指名道姓的调用了。

 class OldboyPeople:
school = 'oldboy'
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex def eat(self):
print('is eating')
def teach(self):
print('这是父类的teach') class OldboyTeacher(OldboyPeople):
def __init__(self,name,age,sex,salary,title):
# OldboyPeople.__init__(self,name,age,sex)
#在Python2中需要写全:super(OldboyTeacher,self)
supper()可以得到一个对象,是专门访问父类的,是子类重用父类的方法
super().__init__(name,age,sex)
self.salary=salary
self.title=title def teach(self):
# OldboyPeople.teach(self)
super().teach()
print('%s is teaching' %self.name)
print(OldboyTeacher.mro()) egon_obj=OldboyTeacher('egon',18,'male',3.1,'沙河霸道金牌讲师')
# print(egon_obj.title)
# print(egon_obj.__dict__)
egon_obj.teach()

supper:supper是依赖于继承的。

class A:
def test(self):
super().test() class B:
def test(self):
print('B') class C(A,B):
pass # a=A()
# a.test() print(C.mro())
c=C()
c.test()

C继承了A和B,

先打印C的执行顺序列表,如果表里边有,然后再去按顺序向后检索。如果表里边没有,报错。

绑定方法与非绑定方法:

绑定到类的方法:

  例如定义了一个类,然后从配置文件中读取配置参数。

 import settings  #定义了一个settings的文件,文件里边存储了两行配置信息,主机名和端口

 class MySql:
def __init__(self,host,port):
self.host=host
self.port=port @classmethod #不加这个参数,定义的是绑定给函数,加上这个参数,定义的是绑定给类。
def from_conf(cls):
print(cls)
# return cls(settings.HOST,settings.PORT) def func1(self):pass conn1=MySql('127.0.0.1',3306) # print(MySql.from_conf)
# conn2=MySql.from_conf() # print(conn1.host,conn2.host) # print(conn1.func1)
# print(conn1.from_conf)
# print(MySql.from_conf) # conn1.from_conf()
# MySql.from_conf()

非绑定方法:

产生一个不相关的值,与任意绑定都不存在。

 import uuid
class MySql:
def __init__(self,host,port):
self.host=host
self.port=port
self.id=self.create_id() # @classmethod
# def from_conf(cls): #绑定给类的
# print(cls)
# # return cls(settings.HOST,settings.PORT)
#
# def func1(self): #绑定给对象的
# pass @staticmethod
def create_id(): #非绑定方法
return str(uuid.uuid1()) conn1=MySql('127.0.0.1',3306)
conn2=MySql('127.0.0.2',3306)
conn3=MySql('127.0.0.3',3306)
# print(MySql.create_id)
# print(conn1.create_id) print(conn1.id,conn2.id,conn3.id)
上一篇:Burnside引理和Polya定理之间的联系


下一篇:迷宫问题 Maze 4X4 (sloved by backtrack)