首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python面向对象2

1、类的继承

当我们定义一个类的时候,可以从某个现有的类继承,新的类称为子类,而被继承的class称为基类、父类或超类,比如之前用到的object,它士所有类的父类。

继承的好处:

(1) 简化代码,减少冗余

(2) 子类可以获取父类的所有功能

示例:

classPerson(object):

def__init__(self, name, age):

self.name = name

self.age = age

defsay(self):

print("My Name Is %s"% (self.name))

defwork(self,job):

print("I can do:"+ job)

classMan(Person):

print("我继承Person")

per = Man("张三",20)#实例化一个对象

print(per.name, per.age)

per.say()#访问类方法

per.work("Coding")#访问类方法

输出:

>>>我继承Person

>>>张三 20

>>>My Name Is 张三

>>>I can do:Coding

说明:Man类只有一个打印功能,但是继承自Person类,所以也会有name、age属性、say方法、work方法。

2、多态

多态概念:当子类和父类都有相同的方法时,子类的方法会替换父类的方法,在代码运行时,会调用子类的同名方法,这就叫多态。

示例:

classPerson(object):

def__init__(self, name, age):

self.name = name

self.age = age

defsay(self):

print("My Name Is %s"% (self.name))

defwork(self,job):

print("I can do:"+ job)

classMan(Person):

defsay(self):#也定义一个say方法

print("%s 说:My Name Is %s"% (self.name,self.name))

print("我继承Person")

per = Man("张三",20)#实例化一个对象

print(per.name, per.age)

per.say()#访问类方法

per.work("Coding")#访问类方法

输出:

>>>我继承Person

>>>张三 20

>>>张三 说:My Name Is 张三

>>>I can do:Coding

说明:say方法相同,子类调用了自己的方法。

3、动态添加属性和方法

由于Python是动态语言,我们可以根据类创建的实例任意添加属性和方法。

示例:

fromtypesimportMethodType

classPerson(object):

def__init__(self, name, age):

self.name = name

self.age = age

per = Person("张三",20)

per.heght =170#动态添加属性

per.sex ="boy"#动态添加属性

print(per.name, per.age,per.heght,per.sex)

defsay(self):

print("My Name Is "+ self.name)

per.say = MethodType(say,per)#动态添加方法

per.say()

输出:

>>>张三 20 170 boy

>>>My Name Is 张三

4、__slots__

如果我们要限制随意添加属性,则可以使用__slots__方法。

示例:

classPerson(object):

__slots__= ("name","age")

per = Person()

per.name ="张三"

per.age =20

print(per.name, per.age)

per.heght =170#动态添加属性

print(per.heght)

输出:会有报错

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181012G0CQNN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券