Python-浅析Python面向对象
Posted 大西young
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-浅析Python面向对象相关的知识,希望对你有一定的参考价值。
Python同Java一样,都属于面向对象语言。
面向对象语言,可以创建类及对象的概念,万物皆对象。
类作为一种抽象的概念,可以视为一个通用的模板。
而对象则可视为实例化的类,是一个个的实体。
1.类之初体验
1 class Car: 2 """这是一个汽车类""" 3 def power(self): 4 print(f"汽车加速,我是{self.name}") 5 6 def stop(self): 7 print("汽车刹车") 8 9 10 sedan= Car() #创建Car类下的一个实例化对象sedan 11 sedan.name = "benz" 12 sedan.power() 13 sedan.stop()
我们首先创建了一个Car类,Car类中包含两个分别名为power和stop的方法,内容分别为输出“汽车加速”和“汽车刹车”
然后我们在下面创建了一个实例化的对象sedan,并且给对象赋予了一个属性name,值为benz
最后,调用类中的方法power()和stop()
输出结果如下
2.关于self
同时我们注意到,在调用对象的方法时,方法中会自动生成一个供调用的self参数
根据定义,类中的每个实例方法的第一个参数都是self,它用于指向对象自身
再看实例
1 class Car: 2 """这是一个汽车类""" 3 def power(self): 4 print(f"汽车加速,我是{self.name},self的地址是{id(self)}") 5 6 def stop(self): 7 print("汽车刹车") 8 9 10 sedan = Car() 11 print(f\'benz的对象id是{id(sedan)}\') 12 sedan.name = "benz" 13 sedan.power() 14 sedan.stop() 15 print(\'-\'*30) 16 volvo = Car() 17 print(f\'volvo的对象id是{id(volvo)}\') 18 volvo.name = "沃尔沃" 19 volvo.power() 20 volvo.stop()
输出结果
self的地址与当前调用对象的id一致,说明self调用的的确为当前对象自身
3.封装性
但是,上述示例中我们在第12行,在类的外部给对象增加了一个属性,这在实际开发中是不被允许的。
对象中包含的属性应封装在类的内部。
具体来说,需要在类的内部定义中新增__init__()方法
在 init 方法内部,使用 self.属性名 = 属性的初始值 就可以定义属性
然后,该类下新实例化的对象,都会自带init中定义的属性
1 class Car: 2 """这是一个汽车类""" 3 def __init__(self): 4 self.name = "benz" 5 def power(self): 6 print(f"汽车加速,我是{self.name}") 7 8 def stop(self): 9 print("汽车刹车") 10 11 12 #使用类名()创建对象的时候,会自动调用初始化方法__init__ 13 sedan = Car() 14 sedan.power() 15 sedan.stop()
运行结果
4.调用多个对象
进一步优化代码
给属性定义,放在调用之时,这样可以真正做到“面向对象”,让不同的实例对象调用
1 class Car: 2 """这是一个汽车类""" 3 def __init__(self,name): 4 self.name = name 5 def power(self): 6 print(f"汽车加速,我是{self.name}") 7 8 def stop(self): 9 print("汽车刹车") 10 11 12 #使用类名()创建对象的时候,会自动调用初始化方法__init__ 13 sedan = Car("benz") 14 sedan.power() 15 sedan.stop() 16 17 truck = Car("volvo") 18 truck.power() 19 truck.stop()
以上是关于Python-浅析Python面向对象的主要内容,如果未能解决你的问题,请参考以下文章