继承
- 定义一个class的时候,可以从某个现有的class继承,新的class称为子类(subclass)
- 被继承的class称为基类,父类或超类(Base class, Super class)
class Animal(object):
def run(self):
print('Animal is running')
class Dog(Animal):
def run(self): # 重写
# 调用父类的方法
super().run()
print('Dog is running')
def eat(self):
print('eat meat')
class Cat(Animal):
pass
dog = Dog()
dog.run()
dog.eat()
运行结果如下
多态
"""
多态
"""
b = Animal() #b是Animal的类型
c = Dog() #c是Dog的类型
# 如果某个实例是一个子类,那他的类型也可以看作父类类型,但反之不行
print(isinstance(b, Animal))
print(isinstance(c, Dog))
print(isinstance(c, Animal))
print(isinstance(b, Dog))
输出结果如下
类型判断
- type()
- isinstance()
- dir() #获取一个对象的所有属性和方法
"""
类型判断
"""
import types
def fn():
pass
print(type(fn))
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()
# 判断obj是否有属性'x'
print(hasattr(obj, 'x'))
print(obj.x)
print(hasattr(obj, 'y'))
# 设置一个属性'y'
setattr(obj, 'y', 19)
print(hasattr(obj, 'y'))
print(getattr(obj, 'y'))
# dir
print(obj.__dir__())
print(dir(obj))