python组合和继承

阅读: 评论:0

python组合和继承

python组合和继承

类的继承

一个类如果继承了另一个类,那么子类可以拥有父类的方法和属性

格式为:

class 子类名(父类名):

xxxxx

比如一个类继承list这个类

class Mylist(list):

pass

#pass表示这个类什么都不干,相当于一个空代码块

list1=Mylist((14,3,6,1,7))

list1.sort()

这么一来Mylist类也有list的方法了

如何调用父类的方法:

a. 父类类名.方法名(self,p1,p2,p3,...)这里面的self就是子类的实例对象而非父类的实例对象了

b. super().方法名(p1,p2,...)而且不用传self

而且python支持多继承

class 子类(父类1,父类2,父类3,...):

但是要尽量避免多继承。

class WaterAnimal:

num=0 #表示初始化多少只水生动物

def __init__(self,num):

self.num=num

class Turtle(waterAnimal):

pass

class Fish(waterAnimal):

pass

class Pool:

fish=None

turtle=None

def __init__(self,x,y):

self.fish=Fish(x)

self.turtle=Turtle(y)

def info(self):

print("水中有%s只乌龟和%s只鱼" % (self.fish.num,self.turtle.num))

pool=Pool(5,10)

pool.info()

像这种将一个对象作为属性存在另一个对象中的做法就叫做组合

继承是纵向关系

组合是横向关系

类对象

所谓的类对象,就是不实例化类,而直接使用类来调用方法和属性

class Demo:

count=0

def addCount(self):

a=Demo()

b=Demo()

c=Demo()

此时a.count和b.count都是100,但是c.count还是10

从上面例子可以看出,定义出来的属性既可以让对象调用,也可以用类调用

用类修改属性时不会改变用对象修改的属性值,但是对象未修改过属性值则会改变所有对象的属性值

所以用类来修改属性值相当于一种初始化的作用

但是,如果使用过类调用addCount方法则要传入对象作为参数

C.addCount(a)

此时a的count属性加1,其他对象的不变

还有 属性名不能和方法名重复,否则会属性会覆盖掉方法。这样这个方法就不存在了

你再去调用这个方法的时候就会报错

因此要遵循属性用名词命名,方法用动词命名

和类相关的函数:

issubclass(类1,类2)    #判断类1是否是类2的子类,第二参如果放入元组,里面放入多个类,那么只要有一个类是类1的父类都算true

例如:

class A :

pass

class B(A) :

pass

issubclass(B,A) #返回True

issubclass(B,B) #返回True

issubclass(B,object) #返回True,object是所有类的基类

isinstance(对象,类) #判断对象是否是类的实例化对象,如果第一参不是个对象而是个类,就会返回false

isinstance(b,B) #True

isinstance(b,A) #True

hasattr(对像,属性)  #判断一个对象是否有某属性,第二参要加引号哦

getattr(对象,属性[,默认值]) #访问某个属性,不存在就可以赋值个默认值

setattr(对象,属性名,值)    #在类之外添加或者修改属性值

delattr(对象,属性名)  #干掉一个属性,不存在则报错

重写:

如果你想重写一个类,重写里面的一个或者几个方法

你可以定义一个类,类名和你要重写的那个类同类名

然后让这个类继承自己:这么一来,你只要重写你要重写的方法,其他方法统统继承不变

class A(A):

.....

本文发布于:2024-02-04 13:49:07,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170708659456119.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:类组合
标签:组合   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23