出售域名 11365.com.cn
有需要请联系 16826375@qq.com
在手机上浏览
在手机上浏览

理解python面向对象编程

发布日期:2020-09-25

python相对于java,c#来说,而向对象的特性还是略显不足,不过基本上也满足了需求!

下面有一个例子来说明!

class Animal():
    def __init__(self,name): #构造方法
        self.name=name

    food="something"
    def set_name(self,food): #类似于setter
        self.food=food

    def eat(self):
        print(self.name," eat ",self.food,"!") #可以用+ 也可以用,连接字符串


class Dog(Animal): #继承Animal 拥有基类的eat方法
    def __init__(self,name):
        self.name=name
    
    def bark(self):
        print(self.name+" 在吼叫:汪汪")

class Dove(Animal): #默认使用基类的构造函数
    def eat(self): #重载基为的eat方法,多态特性
        #print(Animal.__name__)
        print(self.name+" eat nut!")

    def fly(self):
        print(self.name+"在飞翔")

class Fish(Animal):
    def __init__(self,name,area): #子类的构造函数
        Animal.__init__(self,name) #调用基类的构造函数
        self.area=area

    def swim(self):
        print(self.name+"在"+self.area+"里游泳")
    


d=Dog("汪汪")
d.set_name("meat")
d.eat()
d.bark()

print('\r\n')

d=Dove("鹦鹉")
d.eat()
d.fly()

print('\r\n')

d=Fish("金鱼","鱼缸")
d.eat()
d.swim()

运行结果:

PS F:\jsonlee\python\study code>  cd 'f:\jsonlee\python\study code'; & 'python' 'c:\Users\Administrator\.vscode\extensions\ms-python.python-2020.9.111407\pythonFiles\lib\python\debugpy\launcher' '35462' '--' 'f:\jsonlee\python\study code\10.py' 
汪汪  eat  meat !
汪汪 在吼叫:汪汪


鹦鹉 eat nut!
鹦鹉在飞翔


金鱼  eat  something !
金鱼在鱼缸里游泳

可以看到,实现了继承,子类可以调用父类的方法和属性。子类可以重写父类的方法,实现了多态。封装、继承、多态三大特性得到了实现。