gpt4 book ai didi

class - (类变量的使用)Pythonic - 还是从 Java 中学到的讨厌的习惯?

转载 作者:行者123 更新时间:2023-11-28 19:36:12 25 4
gpt4 key购买 nike

你好 Pythoneers:下面的代码只是我正在尝试做的一个模型,但它应该能说明我的问题。

我想知道这是否是我从 Java 编程中学到的肮脏技巧,或者是一种有效的 Pythonic 做事方式:基本上我正在创建大量实例,但我需要跟踪“静态”数据创建时的所有实例。

class Myclass:
counter=0
last_value=None
def __init__(self,name):
self.name=name
Myclass.counter+=1
Myclass.last_value=name

以及使用这个简单类的一些输出,表明一切都按我预期的那样工作:

>>> x=Myclass("hello")
>>> print x.name
hello
>>> print Myclass.last_value
hello
>>> y=Myclass("goodbye")
>>> print y.name
goodbye
>>> print x.name
hello
>>> print Myclass.last_value
goodbye

那么这是做这种事情的一种普遍可接受的方式,还是一种反模式?

[例如,我不太高兴我显然可以从类内(好)和类外(坏)设置计数器;也不热衷于在类代码本身中使用完整的命名空间“Myclass”——只是看起来很笨重;最后,我最初将值设置为“无”——我这样做可能是在模仿静态类型语言吗?]

我使用的是 Python 2.6.2,程序是单线程的。

最佳答案

在我看来,类变量是完美的 Pythonic。

只要注意一件事。一个实例变量可以隐藏一个类变量:

x.counter = 5  # creates an instance variable in the object x.
print x.counter # instance variable, prints 5
print y.counter # class variable, prints 2
print myclass.counter # class variable, prints 2

关于class - (类变量的使用)Pythonic - 还是从 Java 中学到的讨厌的习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3826077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com