码迷,mamicode.com
首页 > 其他好文 > 详细

(8)类和对象

时间:2019-02-01 15:44:37      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:类继承   person   pytho   父类继承   class   多个   info   this   pre   

一、对象

1、多态

方法

绑定到对象特性上面的函数城为方法

鸭子类型:

2、封装

多态可以让用户对于不知道是什么类的对象进行方法调用,封装是可以不用关心对象是如果构建的而直接进行使用

 

继承

 

二、类

定义一个类

python2.0中,有旧式类和新式类的区别

 

新式类要用

 _metaclass_=type #确定使用新式类

 

创建一个类

_metaclass_=type
class Person:
    def setName(self,name):
        self.name=name
    def getName(self):
        return self.name
    def greet(self):
        print "Hello,world! I‘m %s." % self.name

调用

技术分享图片

 

定义对象

不像C# java还需要new。

直接使用 对象名=类名()即可

 

关于self 

self代表本类的实例

python的类方法里,至少要有一个参数self这也是和其他语言区别的地方

self不是固定的关键字,可以随便换,比如 this  ..但python里正常情况下都是用self

 

私有方法

定义时,在方法的前面加两个下划线表示此方法只能在该类中使用。(虽然也有方法能够调用它)

 

三、超类(父类)

 

class a:

class b(a):

a表示超类,b表示子类

 

 

判断是否有子类、超类的关系函数

issubclass(b,a)

如果a是b的子类,则返回true。   不是则返回false

技术分享图片

 

如果想知道该类的基类,可以用 __bases__

技术分享图片

 

检查一个对象是否是一个类的实例用 isinstance方法

技术分享图片

可以看出 bb既是 b类的实例,也是a类的实例。因为 b是a的子类

 

判断对象属于哪个类用  __class__

技术分享图片

 

四、多超类

一个子类可以继承多个父类

 

 技术分享图片

使用多重继承是要注意:

一个方法从多个父类继承,那么必须要注意父类的顺序,先继承的类中的方法会重写后继承的类中的方法。

比如上例 i类中有个方法add,j类中也有个方法add。那么 i类的add方法会重写j类的add方法

技术分享图片

如果还有个e的方法和h类一样,继承了i类和j类。但是e类里也有个add方法。那么会优先调用子类的add方法

技术分享图片

技术分享图片

 

(8)类和对象

标签:类继承   person   pytho   父类继承   class   多个   info   this   pre   

原文地址:https://www.cnblogs.com/buchizaodian/p/6920514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!