學習筆記(8):第二章 程序設計與數據結構-Python面向對象高級特性讓代碼簡單明瞭 3...

立即學習:https://edu.csdn.net/course/play/25504/304702?utm_source=blogtoedu

'''
    繼承
'''
class Animal(object):
    def run(self):
        print('Animal is running')

class Dog(Animal):
    pass

class Cat(Animal):
    pass

dog = Dog()
# dog.run()
cat = Cat()
# cat.run()

class Dog(Animal):
    def run(self):# 重寫
        # super調用父類的run方法
        super().run()
        print('Dog is running')

    def eat(self):
        print('eat meat')

dog = Dog()
dog.run()

# Python作爲動態語言支持對象的動態綁定
# 通過type和isinstance方法來判斷對象類型
# 也可以用dir(不常用)
'''
    多態
'''
# 子類是父類,而父類不是子類
a = Animal()
d = Dog()
print(isinstance(a, Animal))
print(isinstance(a, Dog))
print(isinstance(d, Animal))
print(isinstance(d, Dog))

# 定義方法run_twice調用Animal的方法run
def run_twice(Animal):
    Animal.run()
    Animal.run()

run_twice(Animal())
run_twice(Dog())

'''
    類型判斷
'''
import types
def fu():
    pass

# 判斷fu是否爲函數類型
print(type(fu) == types.FunctionType)
# 判斷abs是否爲內置函數類型
print(type(abs) == types.BuiltinFunctionType)

# getattr(),setattr(),hasattr()

class Myobject(object):
    def __init__(self):
        self.x=9
    def power(self):
        return self.x * self.x

obj = Myobject()

# 用hasattr判斷是否存在屬性'x'
print(hasattr(obj, 'x'))

# 用setattr動態地設置一個屬性'y'
setattr(obj, 'y', 19)
print(hasattr(obj, 'y'))

# 用getatr取屬性'y'的值
print(getattr(obj, 'y'))

# dir方法
print(obj.__dir__())
print(dir(obj))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章