python笔记3
2021/8/17 17:36:04
本文主要是介绍python笔记3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.类的方法
(1)普通方法:show()
class Person(object): city='西安市' def __init__(self,name,age): self.name=name self.age=age def show(self): print('my name is {0},and my age is {1},and my city is {2}'.format(self.name,self.age,self.city)) obj=Person(name='liuxun' age=21) obj.show()
(2)特性方法:info
class Person(object): city='西安市' def __init__(self,name,age): self.name=name self.age=age @property def info(self): print('只读属性') obj=Person(name='liuxun',age=21) obj.info
(3)静态方法:static()
class Person(object): city='西安市' def __init__(self,name,age): self.name=name self.age=age @staticmethod def static(): print('静态方法') #方法三:类方法 @classmethod def lx(cls): print('类的方法') obj=Person(name='liuxun',age=21) obj.static()
(4)类方法
class Person(object): city='西安市' def __init__(self,name,age): self.name=name self.age=age @classmethod def lx(cls): print('类的方法') obj=Person(name='liuxun',age=21) obj.lx()
2.单继承实例
class Login(object): def __init__(self,username,password): self.username=username self.password=password def login(self,nick): if self.username=='liuxun' and self.password=='0223': print('我的昵称是:{0}'.format(nick)) return 'liuxun0223' else: print('您的帐户或密码错误') def profile(self,token): #查看主页 if token=='liuxun0223': print('显示主页信息') else: print('请登录') #动态参数 def func(self,*args,**kwargs): print(args,kwargs) objLogin=Login(username='liuxun',password='0223') objLogin.profile(token=objLogin.login(nick='刘勋')) objLogin.func(name='liuxun',age=21,address='xian')
3.类的继承
(1)单继承:当子类重写了父类的方法后,子类实例化后,调用重写的方法,优先考虑的是子类的方法
继承里面的第一个原则:
前提:单继承
原则:当实例化子类后,子类对象调用的方法和重写的方法重名,优先考虑的是子类的方法
class Person(object): def __init__(self,name,age): self.name=name self.age=age def show(self): print('name is {0},and age is {1}'.format(self.name,self.age)) class Work(Person): def __init__(self,name,age,salary): #super()的方法继承父类的实例属性 方法一: super().__init__(name,age) 方法二: Person.__init__(self,name,age) self.salary = salary def show(self): print('name is {0},and age is {1},and my salary is {2}'.format(self.name, self.age,self.salary)) objWork=Work(name='liuxun',age=21,salary=5000) objWork.show()
(2)从左到右的原则:
前提:子类继承了N个父类,子类没有重写父类的方法
执行结果:实例化子类后,调用父类的方法,它的查找顺序是从左到右,先到第一个去找,没有找到
合要求的,接着去第二个查找,直到找到符合要求的
class Father(object): def show(self): print('father show') class Mother(object): def show(self): print('mother show') class Son(Father,Mother): pass son=Son() son.show()
(3)从上到下的原则:
前提:子类继承了N个父类,子类重写了父类的方法
执行结果:实例化子类后,调用具体的方法,优先考虑子类的方法
class Father(object): def show(self): print('father show') class Mother(object): def show(self): print('mother show') class Son(Father,Mother): def show(self): print('son show') son=Son() son.show()
(4)多继承实战
class Person(object): def __init__(self,name,age): self.name=name self.age=age class Student(Person): def __init__(self,name,age,score): super().__init__(name,age) self.score=score class TestWork(Student): def __init__(self,name,age,score,salary): super().__init__(name,age,score) self.salary=salary def info(self): print('name:{0},age:{1},score:{2},salary:{3}'.format(self.name,self.age,self.score,self.salary)) obj=TestWork(name='liuxun',age=21,score=89,salary=5000) obj.info()
(5)继承的实现原理
MRO的解析顺序规则:从左到右开始查找基类,如果找到第一个匹配的属性类,就会停止查找,如果没有,那就继续查找,
直到查找到符合要求的为止。MRO其实就是通过一个C3线性化算法来实现的,它的核心思想为:
1.子类会先于父类被检查
2.多个父类会根据它们在列表中的顺序被依次检查
3.如果对下一个类存在两个合法的选择,选择第一个父类
class Person(object): def info(self): print('a') def info(self,name): print('b',name) def info(self,name,age): print('c',name,age) class Father(Person): pass class Son(Father): def info(self): pass print(Son.mro()) Son().info()
这篇关于python笔记3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享