当前位置:小鱼儿玄机二站 > 编程应用 > python面向对象

python面向对象

文章作者:编程应用 上传时间:2019-09-03

python 继承,python

 1 #coding=utf-8
 2 class Fruit:#定义一个类
 3     def __init__(self,color):
 4         self.color=color
 5         print("fruit's color:' %s" % self.color)
 6         
 7     def grow(self):
 8         print('grow...')
 9         
10 class Apple(Fruit):#Apple继承Fruit类
11     def __init__(self,color):
12         Fruit.__init__(self,color)#Apple必须显式调用父类的构造函数,可以super(Apple,self).__init__()调用父类
13         print("apple's color: %s " % self.color)
14         
15 class Banana(Fruit):
16     def __init__(self,color):
17         Fruit.__init__(self,color)
18         print("banana's color:%s " % self.color)
19         
20     def grow(self):#此grow方法会覆盖Fruit中的grow方法
21         print('banana grow...')
22 
23 if __name__=="__main__":
24     apple=Apple('red')#Apple的__init__方法调用了Fruit的___init__方法,所以会打印父类中的信息,(可以将父类的print方法去掉)再输出子类的信息
25     apple.grow()#继承自Fruit,所以直接输出父类的信息
26     
27     banana=Banana('yellow')
28     banana.grow()#覆盖父类中信息

 

继承,python 1 # coding=utf-8 2 class Fruit: # 定义二个类 3 def __init__ (self,color): 4 self.color= color 5 print ( " fruit's color:' %s " % self.color) 6 7 def gro...

1.后续介绍以及单承继。

将共性的从头到尾的经过放在父类中,子类只须求关心自身有意的剧情python中装有的源委都以目的,全数的指标都一向或直接接轨了object。


2.无冕示例

# 定义叁个父类,如下:

class Cat(object):

def __init__(self, name, color="白色"):

self.name = name

self.color = color

def run(self):

print("%s--在跑"%self.name)

# 定义多个子类,承继Cat类如下:

class Bosi(Cat):

def setNewName(self, newName):

self.name = newName

def eat(self):

print("%s--在吃"%self.name)

bs = Bosi("印度猫")

print('bs的名称叫:%s'%bs.name)

print('bs的颜色为:%s'%bs.color)

bs.eat()

bs.setNewName('波斯')

bs.run()

运营结果是:

图片 1

说明:

即便子类未有定义__init__主意,不过父类有,所以在子类承接父类的时候这么些主意就被三番五次了,所以借使成立Bosi的对象,就暗中同意实行了要命承袭过来的__init__方法

总结

子类在后续的时候,在定义类时,小括号()中为父类的名字

父类的性质、方法,会被持续给子类。

个人的性质,不可能经过对象直接待上访谈,可是能够由此艺术访谈

个体的方式,无法通过对象间接访问

民用的品质、方法,不会被子类承继,也无法被访谈

貌似意况下,私有的天性、方法都是不对外透露的,往往用来做内部的职业,起到平安的功能


3.多继承

class Horse:

def __init__(self,strong):

self.strong=strong

def run(self):

print('跑得快')

class Donkey:

def __init__(self,ear):

self.ear=ear

def pull(self):

print('拉磨')

class Mule(Horse,Donkey):

pass

mule=Mule(True)

print(mule.strong)

mule.run()

mule.pull()

运作结果是:

True

跑得快

拉磨


4.重写父类方法

所谓重写,正是子类中,有一个和父类一样名字的不二等秘书技,在子类中的方法会覆盖掉父类中同名的方法。

class Father:

def __init__(self,money):

self.money=money

def f1(self):

print('Father.....f1')

class Son(Father):

def __init__(self,name,age,money):

self.name=name

self.age=age

Father.__init__(self,money)

def f1(self):

print('Son......f1')

Father.f1(self)

def __str__(self):

return '%s,%s,%s'%(self.money,self.name,self.age)

son=Son('小王',23,4234234)

son.f1()

print(son)

运转结果是:

Son......f1

Father.....f1

4234234,小王,23


5.多态

如何是包裹?

类是一种包装,将质量和办法封装。

函数也是一种包装,将有着一定共的逻辑代码封装到二个函数中,使用的时候调用就能够

增长代码的扩大性。

什么样是继续?

将集体的(共性的)属性和方式放在父类中,子类只关怀本人有意的性能和章程。

增加代码的扩大性。

什么样是多态?

二个对象在不一样的图景下,具备分裂的形状,用于强类型语言。是应用在三翻五次和接口中实现。

Python中有三种说法:

1、python支持多态,python是一个弱类型,本人一个变量名,能够储存任何类型的值,能够明白为二种形态

2、python不补助多态,多态本身是用于强类型语言的,python是贰个弱类型,所以不帮忙多态


6.类属性、实例属性.

一向在类中定义的,与形式平齐,不在方法里的性质正是 类属性

在格局里通过self.属性 都以实例属性

class Dog:

def __init__(self,name,color):

self.name=name

self.color=color

#创办一个实例对象

d1=Dog('旺财','黑色')

print(d1.name)

print(d1.color)

#实例属性

d1.num=10

print(d1.num)

d2=Dog('小白','白色')

print(d2.name)

运行结果是:

旺财

黑色

10

小白


class Person:

sun=1

p1=Person()

p2=Person()

print(p1.sun)

print(p2.sun)

print(Person.sun)

print('******************************************')

Person.sun=0

print(p1.sun)

print(p2.sun)

print('*************************************')

p1.sun=1111

print(p1.sun)

print(p2.sun)

print(Person.sun)

运作结果是:

1

1

1

******************************************

0

0

*************************************

1111

0

0

7.

本文由小鱼儿玄机二站发布于编程应用,转载请注明出处:python面向对象

关键词: