hellolouis 发表于 2020-6-8 17:59:53

请教类属性的问题

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__和不加有什么区别呢,

Twilight6 发表于 2020-6-8 18:02:31

__init__ 是初始化属性和 设置参数的作用~ 你第一个不能传入参数 但第二个可以

因为这里你设置了 参数的默认值 name='Tom' 所以才可以直接调用函数来打印

heidern0612 发表于 2020-6-8 18:07:02

调用方式不一样,A类里面name是属于类的静态属性,B类里面,init属于初始化自动传值,你传的是实例化的值。

一个是总类属性,一个是实例属性。

1223253411 发表于 2020-6-9 10:17:44

通过__init__为每个对象初始化属性,就是实例变量,每创建一个对象,每个对象都包含着一份。
直接在类下面创建的变量叫类变量,类变量被所有的对象共享,创建多个对象,每个对象都共享着那一份。

1223253411 发表于 2020-6-9 10:23:33

还有类变量要用类名去点。

A.name

用 对象去点 有这种语法,不过不建议,当想要更改类变量的时候,用对象没办法改变类属性,只有类才能改变类属性。
比如:你上面的 a 想要改变的话
a.name = "Alex"# 改不了的,这只不过是创建了个实例变量而已,类变量还是那个"Tom"
页: [1]
查看完整版本: 请教类属性的问题