类和对象

Posted buchizaodian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象相关的知识,希望对你有一定的参考价值。

一、对象

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方法

技术分享图片

技术分享图片

 

以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章

使用CSS伪类和伪对象实现dl;dt+dd在一行显示

JAVA方法的定义

10方法的定义和重载和递归

JavaSE:类和对象

如何从片段内的列表视图打开链接网址?

VSCode自定义代码片段12——JavaScript的Promise对象