
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__这是什么用法?能给详细的说说吗?谢谢。 展开
"""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__这是什么用法?能给详细的说说吗?谢谢。 展开
3个回答
展开全部
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搜标题,即可找到帖子地址)
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搜标题,即可找到帖子地址)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
类的全局对象,记录所有Circle的实例,使用__class__是考虑派生的问题,举个例子,如果有一个子类
class Circle_2( Circle ):
all_circles = [] #只要再重新定义一个队列,就可以收集Circle_2的实例,如果不重新定义
#这个对象,那么所有的实例都会挂载到基类的队列
因此要比Circle.all_circles.append(self)灵活,这个是一个比较常见的写法,如果需要连这个类变量域都隐藏的话,那么可以使用元类,但是比较少见.
class Circle_2( Circle ):
all_circles = [] #只要再重新定义一个队列,就可以收集Circle_2的实例,如果不重新定义
#这个对象,那么所有的实例都会挂载到基类的队列
因此要比Circle.all_circles.append(self)灵活,这个是一个比较常见的写法,如果需要连这个类变量域都隐藏的话,那么可以使用元类,但是比较少见.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
all_circles这个是变量名,你可以看这一行:all_circles = [],你就知道这是一个列表。
在这个类初始化之前,你已经创建了两个变量all_circles和pi,那么在用__init__初始化的时候你就需要调用这个类,也就是__class__,这里是指调用类里面的all_circles,也就是前面的那个空的列表。
在这个类初始化之前,你已经创建了两个变量all_circles和pi,那么在用__init__初始化的时候你就需要调用这个类,也就是__class__,这里是指调用类里面的all_circles,也就是前面的那个空的列表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询