立即學習: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))