【问题标题】:Python class variables [duplicate]Python类变量[重复]
【发布时间】:2013-01-15 18:49:38
【问题描述】:

可能重复:
Python variable declaration

我是 python 新手,我想知道如何将适当的“空”变量放入类中。

例如,在 C++ 中,我可以放置如下变量:

public class employee{
private:
int ID;
string name;
public:
.....
}

在python中,如何设置名称和id而不给它们值?是不是类似:

class employee:
__name__
__id__
...

另外,是否可以为每个变量设置数据类型?

【问题讨论】:

  • 你想要达到什么目的?
  • 在您的标题中,您指的是"Class variables",但您似乎实际上是在谈论"Instance Variables"。类变量只有一个值,该值在类的所有实例之间共享,而实例变量(您在 C 代码中似乎在谈论,我相信它实际上是 C++ 代码)每个实例都有一个值您创建的类。
  • @Mark 我不知道,哈哈……是的,它应该是 c++。感谢您指出这一点

标签: python


【解决方案1】:

您确实不能这样做,但您可以这样做:

class FooBar:
    def __init__(self):
        self.whatever = None

另外,无需在 Python 中声明数据类型。这就是动态语言的全部意义所在!

不要用 C++ 口音编写 python。按照设计的方式编写python,你会更快乐。

【讨论】:

  • 当然 Python 有数据类型,很多。这就是强类型语言的全部意义所在! (虽然变量没有类型 - 只有对象有。)
  • 嗯 - 有数据类型 - 它恰好是类型的对象,而不是它的名称...... - python是强类型的,只是不是静态类型的:)
  • 如果没有数据类型,我们真的应该重命名TypeError异常;)
  • 我的立场是正确的:)我会修复
【解决方案2】:

你不能。

python中没有空变量的概念,必须是 初始化为某事。而且也没有数据类型的概念。 在 python 中,变量名只是指向对象的符号(虽然对象有类型)。

In [37]: x=2      #x refers to an integer

In [38]: x="foo"  #now x refers to a string object

最接近空变量的是使用NoneEllipsis(仅限py 3x)

In [5]: x=None

In [6]: x

In [7]: x=...        # Ellipsis , py 3.x only

In [8]: x
Out[8]: Ellipsis

NoneEllipsis 本身就是对象。

【讨论】:

  • None 是我们在 Python 中所说的“空”(但它也是一个真实的对象)。
  • 另一种选择是不用担心缺少属性,并在类上定义__getattr__,这将返回一个默认值 - 但因为我们并不真正知道 OP 想要什么......
猜你喜欢
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 2015-08-19
  • 2019-08-12
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
相关资源
最近更新 更多