python 在将参数传递给 init 时引用类变量

标签 python arguments default init class-variables

我想达到的目标:
1. 有一个类变量来记录创建对象的数量
2. 该变量不应该对对象/其他对象可用,即对类私有(private)
3.如果在初始化时没有提供具体的ID,使用这个计数器变量来赋值object.ID
我有以下 python 代码

class UserClass(object) :
    __user_id_counter = 0
    def __init__(self, UserID=__user_id_counter) :
        self.UserID = UserID
        __user_id_counter += 1

myuser = UserClass()

但是我越来越 UnboundLocalError:赋值前引用了局部变量“_UserClass__user_id_counter”
我是 python 的新手,所以请在这里帮助我 :)

最佳答案

要访问 __user_id_counter,需要一个对象或类引用。在参数列表中 selfUserClass 无法访问,因此:

class UserClass(object) :
    __user_id_counter = 0
    def __init__(self, UserID=None) :
        self.UserID = self.__user_id_counter if UserID is None else UserID
        UserClass.__user_id_counter += 1

关于python 在将参数传递给 init 时引用类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841261/

相关文章:

python - 多处理不使用所有内核

python - djangorest框架用户注册

C# 使用 Process.Start 参数和路径中的空格

vb.net - 在 GridView 上强制使用默认按钮

css - 如何让Bootstrap成为浏览器的默认渲染风格

android - 无法在 react-native run-android 上的设备上安装应用程序

python - 以透视方式绘制以 3D 投影的一系列 2D 图

python - 按列表顺序替换值

java - 为什么我们将字符串数组作为参数传递给 main() 方法,为什么不传递任何集合类型或包装类型或原始类型?

vba - (Excel) 带有可选参数的 vba 程序将无法启动