Python说文解字_杂谈05
2020-12-03 08:44
标签:方法 init 方式 算法 bsp instance py3 is和== 相同 1. isinstance和type: is和==符号,is指的是内存地址,是不是一个对象,ID知否相同 集成链 2. 类变量和对象变量: 类中的self == 实例,其实就等于a = A()的a,等于传递进去,这就是为什么类中有self的原因。 记住:查找的顺序是由下而上进行查找 记住:类变量只能通过类来更改,如果通过实例去更改,只会开辟一块儿新的变量,类的变量其实不能更改,但是看起来是一个变量。类的变量是所有成员共享的。 3. 类属性和实例属性的查找顺序: 定义在内部的实例或者方法。 查找分深度查找和广度查找,其实前面有类名.__init__这样继承父类的方式就是深度查找,我们Py3用的是MRO算法,用的是C3,super()就是一种C3的查找方法。 记住:可以用__MRO__查看继承链的关系。 记住:py2,必须要写object才有object,py3.不用写也会继承object,是一种新式类 4. 静态方法、类方法、对象方法(实例方法): Python说文解字_杂谈05 标签:方法 init 方式 算法 bsp instance py3 is和== 相同 原文地址:https://www.cnblogs.com/noah0532/p/10987522.htmlclass A:
pass
class B(A):
pass
b = B()
print(isinstance(b,B))
print(isinstance(b,A))
print(type(b) is B)
print(id(type(b)),id(B))
# 2943616512536 2943616512536
class A:
aa = 1
def __init__(self,x,y):
self.x = x
self.y = y
a = A(2,3)
A.aa = 11
a.aa = 100
print(a.x,a.y,a.aa)
# 2 3 1
print(A.aa)
# print(A.x,A.y) # 抛异常
# 2 3 100
# 11
class A:
name = "A"
def __init__(self):
self.name = "obj"
a = A()
print(a.name)
# 会打印obj回不到name变量
class D:
pass
class C(D):
pass
class B(D):
pass
class A(B,C):
pass
print(A.__mro__)
# (class ‘__main__.A‘>, class ‘__main__.B‘>, class ‘__main__.C‘>, class ‘__main__.D‘>, class ‘object‘>)