python是面向对象语言_Python-浅析Python面向对象

Python同Java一样,都属于面向对象语言。

面向对象语言,可以创建类及对象的概念,万物皆对象。

类作为一种抽象的概念,可以视为一个通用的模板。

而对象则可视为实例化的类,是一个个的实体。

1.类之初体验

1 classCar:2 """这是一个汽车类"""

3 defpower(self):4 print(f"汽车加速,我是{self.name}")

5

6 defstop(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 classCar:2 """这是一个汽车类"""

3 defpower(self):4 print(f"汽车加速,我是{self.name},self的地址是{id(self)}")5

6 defstop(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 classCar:2 """这是一个汽车类"""

3 def __init__(self):4 self.name = "benz"

5 defpower(self):6 print(f"汽车加速,我是{self.name}")7

8 defstop(self):9 print("汽车刹车")10

11

12 #使用类名()创建对象的时候,会自动调用初始化方法__init__

13 sedan =Car()14 sedan.power()15 sedan.stop()

运行结果

4.调用多个对象

进一步优化代码

给属性定义,放在调用之时,这样可以真正做到“面向对象”,让不同的实例对象调用

1 classCar:2 """这是一个汽车类"""

3 def __init__(self,name):4 self.name =name5 defpower(self):6 print(f"汽车加速,我是{self.name}")7

8 defstop(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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值