python 编程, 类初始化问题

人家的代码如下:"""circlemodule:containstheCircleclass."""classCircle:"""Circleclass"""all_ci... 人家的代码如下:
"""circle module: contains the Circle class."""
class Circle:
"""Circle class"""
all_circles = []
pi = 3.14159
def __init__(self, r=1):
"""Create a Circle with the given radius"""
self.radius = r
self.__class__.all_circles.append(self)
最后一行的程序,__class__还有all__这是什么用法?能给详细的说说吗?谢谢。
展开
 我来答
againinput4
2012-12-09 · TA获得超过2407个赞
知道大有可为答主
回答量:1446
采纳率:70%
帮助的人:667万
展开全部
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搜标题,即可找到帖子地址)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aa1ss2_2
2012-12-09 · TA获得超过397个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:200万
展开全部
类的全局对象,记录所有Circle的实例,使用__class__是考虑派生的问题,举个例子,如果有一个子类
class Circle_2( Circle ):
all_circles = [] #只要再重新定义一个队列,就可以收集Circle_2的实例,如果不重新定义
#这个对象,那么所有的实例都会挂载到基类的队列

因此要比Circle.all_circles.append(self)灵活,这个是一个比较常见的写法,如果需要连这个类变量域都隐藏的话,那么可以使用元类,但是比较少见.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浩星辰锟su
2012-12-09 · TA获得超过6765个赞
知道大有可为答主
回答量:975
采纳率:0%
帮助的人:458万
展开全部
all_circles这个是变量名,你可以看这一行:all_circles = [],你就知道这是一个列表。
在这个类初始化之前,你已经创建了两个变量all_circles和pi,那么在用__init__初始化的时候你就需要调用这个类,也就是__class__,这里是指调用类里面的all_circles,也就是前面的那个空的列表。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式