python 编程, 类初始化问题
发布网友
发布时间:2022-04-26 20:24
我来回答
共3个回答
热心网友
时间:2022-04-18 04:59
1.self.__class__
self是当前,类的实例的变量,self.__class__用于获得对应的类的本身的变量。
2.前面通过
class Circle:
定义而来一个类,叫做Circle
其中,定义了类的变量:
all_circles = []
表示是:一个名叫all_circles的列表,并且初始化赋值为[],表示一个空的列表。
3.all__这是什么用法?
是你看错了。
实际是:
all_circles
这是一个单个的变量而已;
这个变量,是之前类Circle中的变量all_circles。
关于这部分内容,建议你去看看我所总结的:
【整理】Python中:self和init__的含义 + 为何要有self和__init__
和
【整理】Python中变量的作用域(variable scope)
就懂了。
里面有截图解释的,便于你理解。
(此处不给贴地址,请自己用google搜标题,即可找到帖子地址)
热心网友
时间:2022-04-18 06:17
类的全局对象,记录所有Circle的实例,使用__class__是考虑派生的问题,举个例子,如果有一个子类
class Circle_2( Circle ):
all_circles = [] #只要再重新定义一个队列,就可以收集Circle_2的实例,如果不重新定义
#这个对象,那么所有的实例都会挂载到基类的队列
因此要比Circle.all_circles.append(self)灵活,这个是一个比较常见的写法,如果需要连这个类变量域都隐藏的话,那么可以使用元类,但是比较少见.
热心网友
时间:2022-04-18 07:52
all_circles这个是变量名,你可以看这一行:all_circles = [],你就知道这是一个列表。
在这个类初始化之前,你已经创建了两个变量all_circles和pi,那么在用__init__初始化的时候你就需要调用这个类,也就是__class__,这里是指调用类里面的all_circles,也就是前面的那个空的列表。