1.类变量和实例变量的区别?
class Dog:
# 类变量(静态属性)
kind = 'canine'
def __init__(self, name):
# 实例变量(对象属性),self 表示类的实例
self.name = name
dog = Dog("小黄")
print(dog.name) # 小黄
print(dog.kind) # canine
print(Dog.kind) # canine
print(Dog.name) # 报错:AttributeError: type object 'Dog' has no attribute 'name'
类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象。
2.super 的作用?
在子类中调用父类的方法。
使用场景:一般情况下,子类中有和父类相同的方法名。
3.isinstance
和 type
的区别并用代码举例说明?
class A:
pass
class B(A):
pass
b = B()
print(isinstance(b, B)) # True
print(isinstance(b, A)) # True
print(type(B)) # <class 'type'>
print(type(b)) # <class ‘__main__.B’>
- isinstance 能判断对象和类之间的继承关系。
- 在调用 isinstance 方法时,会根据继承关系,自动找到一个继承链,而实例化的对象 b 本身肯定是一个 B 类型的对象,而对象 B(类)又继承了对象 A(类),所以对象 b 又是一个 A 类型的对象。