请教类属性的问题
class A():name = 'Tom'
>>>a = A()
>>>a.name
Tom
class B():
def __init__(self, name='Tom')
self.name = name
>>>b = B()
>>>b.name
Tom
都是输出Tom
请问这两个类,加了__init__和不加有什么区别呢, __init__ 是初始化属性和 设置参数的作用~ 你第一个不能传入参数 但第二个可以
因为这里你设置了 参数的默认值 name='Tom' 所以才可以直接调用函数来打印
调用方式不一样,A类里面name是属于类的静态属性,B类里面,init属于初始化自动传值,你传的是实例化的值。
一个是总类属性,一个是实例属性。 通过__init__为每个对象初始化属性,就是实例变量,每创建一个对象,每个对象都包含着一份。
直接在类下面创建的变量叫类变量,类变量被所有的对象共享,创建多个对象,每个对象都共享着那一份。 还有类变量要用类名去点。
A.name
用 对象去点 有这种语法,不过不建议,当想要更改类变量的时候,用对象没办法改变类属性,只有类才能改变类属性。
比如:你上面的 a 想要改变的话
a.name = "Alex"# 改不了的,这只不过是创建了个实例变量而已,类变量还是那个"Tom"
页:
[1]