supper:可以利用supper来重用父类的方法,可以不用指名道姓的调用了。
1 class OldboyPeople: 2 school = 'oldboy' 3 def __init__(self,name,age,sex): 4 self.name=name 5 self.age=age 6 self.sex=sex 7 8 def eat(self): 9 print('is eating') 10 def teach(self): 11 print('这是父类的teach') 12 13 class OldboyTeacher(OldboyPeople): 14 def __init__(self,name,age,sex,salary,title): 15 # OldboyPeople.__init__(self,name,age,sex) 16 #在Python2中需要写全:super(OldboyTeacher,self) 17 supper()可以得到一个对象,是专门访问父类的,是子类重用父类的方法 18 super().__init__(name,age,sex) 19 self.salary=salary 20 self.title=title 21 22 def teach(self): 23 # OldboyPeople.teach(self) 24 super().teach() 25 print('%s is teaching' %self.name) 26 print(OldboyTeacher.mro()) 27 28 egon_obj=OldboyTeacher('egon',18,'male',3.1,'沙河霸道金牌讲师') 29 # print(egon_obj.title) 30 # print(egon_obj.__dict__) 31 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的执行顺序列表,如果表里边有,然后再去按顺序向后检索。如果表里边没有,报错。
绑定方法与非绑定方法:
绑定到类的方法:
例如定义了一个类,然后从配置文件中读取配置参数。
1 import settings #定义了一个settings的文件,文件里边存储了两行配置信息,主机名和端口 2 3 class MySql: 4 def __init__(self,host,port): 5 self.host=host 6 self.port=port 7 8 @classmethod #不加这个参数,定义的是绑定给函数,加上这个参数,定义的是绑定给类。 9 def from_conf(cls): 10 print(cls) 11 # return cls(settings.HOST,settings.PORT) 12 13 def func1(self):pass 14 15 16 conn1=MySql('127.0.0.1',3306) 17 18 # print(MySql.from_conf) 19 # conn2=MySql.from_conf() 20 21 # print(conn1.host,conn2.host) 22 23 # print(conn1.func1) 24 # print(conn1.from_conf) 25 # print(MySql.from_conf) 26 27 28 # conn1.from_conf() 29 # MySql.from_conf()
非绑定方法:
产生一个不相关的值,与任意绑定都不存在。
1 import uuid 2 class MySql: 3 def __init__(self,host,port): 4 self.host=host 5 self.port=port 6 self.id=self.create_id() 7 8 # @classmethod 9 # def from_conf(cls): #绑定给类的 10 # print(cls) 11 # # return cls(settings.HOST,settings.PORT) 12 # 13 # def func1(self): #绑定给对象的 14 # pass 15 16 @staticmethod 17 def create_id(): #非绑定方法 18 return str(uuid.uuid1()) 19 20 21 conn1=MySql('127.0.0.1',3306) 22 conn2=MySql('127.0.0.2',3306) 23 conn3=MySql('127.0.0.3',3306) 24 # print(MySql.create_id) 25 # print(conn1.create_id) 26 27 print(conn1.id,conn2.id,conn3.id)