1. 程式人生 > >類的派生,組合

類的派生,組合

派生:

子類也可以新增自己新的屬性或者在自己這裡重新定義這些屬性(不會影響到父類),需要注意的是,一旦重新定義了自己的屬性且與父類重名,那麼呼叫新增的屬性時,就以自己為準了。

class Parent():
    def process(self):
        raise TypeError("you should define self")



class Son(Parent):
    pass

s=Son()
s.process()

Traceback (most recent call last):
File "F:/back02/interactiveclass.py", line 83, in <module>
s.process()
File "F:/back02/interactiveclass.py", line 75, in process
raise TypeError("you should define self")
TypeError: you should define self

 


class Parent():
def process(self):
raise TypeError("you should define self")



class Son(Parent):
def process(self): #自己重新定義父類的process,呼叫時用自己的
print("my process")

s=Son()
s.process()

my process


class Parent():
    def process(self):
        raise TypeError("
you should define self") def hello(self): return 123 class Son(Parent): def process(self): print("my process") print(Parent.hello(self)) #使用父類定義的 s=Son() s.process()
class Parent():
    def process(self):
        raise TypeError("you should define self"
) def hello(self): return 123 class Son(Parent): def hello(self): print('myhello') def process(self): print("my process") print(Parent.hello(self)) self.hello() #使用自己的 s=Son() s.process()

 組合:

組合指的是,在一個類中以另外一個類的物件作為資料屬性,稱為類的組合

class foo1():
    def __init__(self,name,age):
        self.name=name
        self.age=age

class foo2():
    def __init__(self):
        self.obj=foo1('wes',13)    #self.obj foo1()的一個物件,所以self.obj(s.obj)具有foo1()物件的所有屬性,也可以呼叫foo1類的方法


s=foo2()
print(s.obj.name)

wes


class foo1():
def __init__(self,name,age):
self.name=name
self.age=age
def func(self):
print('foo1.func')

class foo2():
def __init__(self):
self.obj=foo1('wes',13)


s=foo2()
print(s.obj.name)
s.obj.func()

wes
foo1.func