1. 程式人生 > >Python面向對象的三大特點:封裝,繼承和多態(示例)

Python面向對象的三大特點:封裝,繼承和多態(示例)

方法名 類的方法 eth ani The class 無法 trac eight

繼承

單繼承:

#類定義
class people:
    #定義基本屬性
    name = ‘‘
    age = 0
    #定義私有屬性,私有屬性在類外部無法直接進行訪問
    __weight = 0
    #定義構造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 說: 我 %d 歲。" %(self.name,self.age))
 
#單繼承示例
class student(people):
    grade = ‘‘
    def __init__(self,n,a,w,g):
        #調用父類的構函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆寫父類的方法
    def speak(self):
        print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))
 
 
 
s = student(‘ken‘,10,60,3)
s.speak()

實現結果

ken 說: 我 10 歲了,我在讀 3 年級

多繼承:(雖然是可以的,但是不建議這麽做,只需要了解繼承時的順序是由左至右的即可)

#類定義
class people:
    #定義基本屬性
    name = ‘‘
    age = 0
    #定義私有屬性,私有屬性在類外部無法直接進行訪問
    __weight = 0
    #定義構造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 說: 我 %d 歲。" %(self.name,self.age))
 
#單繼承示例
class student(people):
    grade = ‘‘
    def __init__(self,n,a,w,g):
        #調用父類的構函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆寫父類的方法
    def speak(self):
        print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))
 
#另一個類,多重繼承之前的準備
class speaker():
    topic = ‘‘
    name = ‘‘
    def __init__(self,n,t):
        self.name = n
        self.topic = t
    def speak(self):
        print("我叫 %s,我是一個演說家,我演講的主題是 %s"%(self.name,self.topic))
 
#多重繼承
class sample(speaker,student):
    a =‘‘
    def __init__(self,n,a,w,g,t):
        student.__init__(self,n,a,w,g)
        speaker.__init__(self,n,t)
 
test = sample("Tim",25,80,4,"Python")
test.speak()   #方法名同,默認調用的是在括號中排前地父類的方法

封裝:

class Student(object):
    def __init__(self, name, score):
        self.name = name
         self.score = score

May = Student("May",90)                      # 須要提供兩個屬性
Peter = Student("Peter",85)
print(May.name, May.score)
print(Peter.name, Peter.score)

def print_score(Student):                    # 外部函數
    print_score(Student)
# print("%s‘s score is: %d" %(Student.name,Student.score))             
# 普通 print 寫法
print("{0}‘s score is: {1}".format(Student.name,Student.score))        
print_score(May)    
print_score(Peter)

多態:

class Animal(object):
    def __init__(self, name):  # Constructor of the class
        self.name = name
    def talk(self):
        raise NotImplementedError("Subclass must implement abstract method")
class Cat(Animal):
    def talk(self):
        print(‘%s: 喵喵喵!‘ %self.name)
class Dog(Animal):
    def talk(self):
        print(‘%s: 汪!汪!汪!‘ %self.name)
def func(obj): #一個接口,多種形態
    obj.talk()
c1 = Cat(‘毛毛‘)
d1 = Dog(‘灰灰‘)
func(c1)
func(d1)

Python面向對象的三大特點:封裝,繼承和多態(示例)