Python面向对象
在写软件的过程中发现很多基础知识不牢固,快速过一遍。
风格:面向对象,面向对象实现方法:封装、继承、多态,首先从python类开始
函数调用方法
class cat:
index = 0
def __init__(self,name):
self.name = name
def run(self):
print("cat run")
def main():
p = cat("miao")
p.run()
if __name__ == "__main__":
main()
python默认main函数为其入口,def main,然后添加if name xxx,这两段后,在main中实现逻辑,执行即可
类和函数
类比函数多了一个self参数,self是类的实例(具体是类实例的地址),index可以在类实例间共享
类调用是先生成实例,然后用实例的指针(self)去访问内部变量,比如self.name
class声明语法实现了类的封装
类的继承
class SubClassName (ParentClass1[, ParentClass2, ...]):
按上述语法将父类指针传递到子类,就可以在子类实例中实现父类方法了,一个子类可以继承多个父类
父类方法查找:
解释器按照MRO中的顺序,逐个在父类中查找这个方法。一旦找到,解释器就会使用找到的方法。
也就是说,在执行过程中,python解释器会自己去父类中索引子类中没有的方法并调用,而不是拷贝父类方法到子类再调用
class animal:
def __init__(self):
pass
def echo(self):
print(self.name)
class cat(animal):
index = 0
def __init__(self,name):
self.name = name
def run(self):
print("cat run")
def main():
p = cat("miao")
#p.run()
p.echo()
if __name__ == "__main__":
main()
结果:miao
类的多态
多态用到运算符重载、方法重载。重写方法
class animal:
def __init__(self):
pass
def echo(self):
print(self.name)
class cat:
index = 0
def __init__(self,name):
self.name = name
def run(self):
print(self.name)
def echo(self):
print("cat echo")
def main():
p = cat("miao")
#p.run()
p.echo()
if __name__ == "__main__":
main()
结果:cat echo