1. 程式人生 > >Python基礎類與繼承學習

Python基礎類與繼承學習

#類
class CocaCola:
    formula = ['caffeine','sugar','water','soda']
    def drink(self):
        print('Energy!')
coke = CocaCola()
coke.drink()

print('\n')

#self
class Coca:
    formula = ['caffeine','sugar','water','soda']
    def drink(coke):    # 把self改為coke
        print('Energy!')
coke = Coca()
coke.drink()

print('\n')

#魔術方法
class CocaCo():
    formula = ['caffeine','sugar','water','soda']
    def __init__(self):
        self.local_logo = '可口可樂'
    def drink(self): 
        print('Energy!')
coke = CocaCo()
print(coke.local_logo)

print('\n')

#父類
class People(object):
    #初始化函式
    def __init__(self,name,age,weight):
        self.name =name
        self.age =age
        self.weight = weight
    #物件函式
    def sleep(self):
        print('這是People類中的sleep函式')
    #根據工作時間,計算體重是否減少的功能函式
    def work_time(self,time):
        #如果工作時間在8-12小時範圍,體重-2斤
        #如果超過12小時,體重-5斤
        if 8<time<=12:
            self.weight -= 2
        elif time>12:
            self.weight -= 5
 
 
#宣告Man類,繼承自People類
class Man(People):
    def __init__(self,name,age,sex,weight,height):
        #呼叫父類的初始化,將父類的屬性進行初始化,並且將self物件作為引數傳遞到父類的初始化函式中
        super(Man,self).__init__(name,age,weight)
        #初始化當前類擁有的屬性
        self.sex = sex
        self.height = height
    def drink(self):
        print('這人光喝酒')
    def sleep(self):
        #在這個sleep函式中,可以執行和父類中完全不同的功能
        print('這是Man類中的sleep函式')
    #2.重寫work_time函式
    def work_time(self,time):
        #2.1根據時間計算體重
        super(Man,self).work_time(time)
        #2.2根據體重判斷身材
        #身高-105 = 體重  身材標準
        #身高-105 > 體重 身材偏瘦
        #身高-105 > 體重 身材偏胖
        result = self.height-105
        if result>self.weight:
            print('偏瘦')
        elif result<self.weight:
            print('偏胖')
        else:
            print('標準')
 
 
#建立People物件p1
p1 = People('張三',22,170)
p1.sleep()
p1.work_time(13)
print('p1工作之後的體重:%s'%p1.weight)
# 父類不能呼叫子類的函式
# p1.drink()
#建立Man類物件
m = Man('李四',22,'男',70,190)
m.sleep()
#m在執行work_time時,除了計算體重還要判斷身材是否標準
m.work_time(13)
print('m工作之後的體重:%s'%m.weight)
print(m.name)
print(m.age)
print(m.sex)

print('\n')

#多繼承
class Base(object):
    def __init__(self):
        print("base_init")

class A(Base):
    def __init__(self):
        print('start_A')
        # Base.__init__(self)
        super(A, self).__init__()
        print('finish_A')

class B(Base):
    def __init__(self):
        print('start_B')
        # Base.__init__(self)
        super(B, self).__init__()
        print('finish_B')

class C(A,B):
    pass

c = C();


print('\n')

class Base(object):
    def __init__(self):
        print("base_init")

class A(Base):
    def __init__(self):
        print('start_A')
        # Base.__init__(self)
        super(A, self).__init__()
        print('finish_A')

class B(object):
    def __init__(self):
        print('start_B')
        # Base.__init__(self)
        super(B, self).__init__()
        print('finish_B')

class C(A,B):
    pass

c = C();


在這裡插入圖片描述