2024-05-14 22:21:56 发布
网友
我不确定用默认值初始化列表的正确方式是什么。 我说的是变量自我保护特权. 这是正确的方法吗? 谢谢
class Privileges(): """privileges class""" def __init__(self): self.privileges = ["can add post" , "can delete post" , "can ban user"] def show_privileges(self): print(self.privileges)
为类定义默认值的两个位置通常是作为类属性,或者在__init__方法中作为实例属性。你知道吗
__init__
如果类的所有实例共享相同的默认值,则可以将其设为类属性
class Privileges(): privileges = ["can add post" , "can delete post" , "can ban user"] def show_privileges(self): print(self.privileges)
如果每个实例的属性不同,您可以将其作为一个实例属性
class Privileges(): def __init__(self): self.privileges = ["can add post" , "can delete post" , "can ban user"]
请注意,使用类属性并不妨碍您在某个点添加具有相同名称的实例属性,这将覆盖默认的类属性。你知道吗
class Privileges(): privileges = ['can add post'] def show_privileges(self): print(self.privileges) def set_better_privileges(self): self.privileges = ["can add post" , "can delete post" , "can ban user"]
你知道吗
>>> p = Privileges() >>> p.show_privileges() ['can add post'] >>> p.set_better_privileges() >>> p.show_privileges() ["can add post" , "can delete post" , "can ban user"] >>> p2 = Privileges() >>> p2.show_privileges() ['can add post']
将类属性用作默认值的一个优点是,它允许您读取默认值而不必首先实例化类,并且还允许您更改该类的all实例的默认值。请注意这个行为,因为根据类实例如何使用和修改这些变量,您可能会无意中修改该类的所有实例之间共享的默认值,而不仅仅是针对该实例。你知道吗
为类定义默认值的两个位置通常是作为类属性,或者在
__init__
方法中作为实例属性。你知道吗如果类的所有实例共享相同的默认值,则可以将其设为类属性
如果每个实例的属性不同,您可以将其作为一个实例属性
请注意,使用类属性并不妨碍您在某个点添加具有相同名称的实例属性,这将覆盖默认的类属性。你知道吗
你知道吗
将类属性用作默认值的一个优点是,它允许您读取默认值而不必首先实例化类,并且还允许您更改该类的all实例的默认值。请注意这个行为,因为根据类实例如何使用和修改这些变量,您可能会无意中修改该类的所有实例之间共享的默认值,而不仅仅是针对该实例。你知道吗
相关问题 更多 >
编程相关推荐