Python系列8——类和对象(2)

写在前面

类的这个概念在显示生活中很容易找到生动的例子。

比如说,在数学中,数字分为整数、小数、复数这三种类型。不同类型的数据运算方法是不同的。这与计算机中的基本类型是很相似的。因此,不要把类想的遥不可及,归根结底类就是对一类具有相同属性和行为的对象进行分类的结果

在面向对象编程时,这种概念便被借用了。我们可以通过类,定义我们自己的数据类型,并赋予其相应的属性和方法。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age =age
    
    def work(self):
        print(self.name, 'working')

    def walk(self):
        print(self.name, 'walking')


xiaoMing = Person('小明', 20)
xiaoFang = Person('小芳', 22)

xiaoMing.work()
xiaoFang.work()

但是我们会遇到这样的问题。当我们用xiaoMing.work()的时候,Python是怎么知道是xiaoMing在调用呢?关键点就在于self。xiaoMing调用时,将xiaoMing这个的地址赋值给了self,那么self便指向了当前调用对象。同样地,对于xiaoFang来讲也是同样的道理。因此,我们得出结论:Python中的self在调用过程中指向当前调用对象。

多态是减少代码重复性和明晰程序逻辑的非常有用的方法。一般情况下,实现多态的方法有两种,override(重写)和overload(重载)。

多态
PythonPython中没有重载overload,因为python中的函数形参个数是变化的。Python中的override,在继承中子类的方法可以覆盖父类的方法
C++C++中有重载,重载函数的函数名相同,函数形参的个数或类型不同C++中通过虚函数(虚表)来实现override
JavaJava中有重载,与C++相同Java中override,与Python中的重写相同。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值