相关疑难解决方法(0)

__slots__的用法?

__slots__Python中的目的是什么- 特别是关于我何时想要使用它,何时不想使用它?

python oop slots python-internals

697
推荐指数
10
解决办法
18万
查看次数

Python类的__dict __.__ dict__属性是什么?

>>> class A(object): pass
... 
>>> A.__dict__
<dictproxy object at 0x173ef30>
>>> A.__dict__.__dict__
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
AttributeError: 'dictproxy' object has no attribute '__dict__'
>>> A.__dict__.copy()
{'__dict__': <attribute '__dict__' of 'A' objects> ... }
>>> A.__dict__['__dict__']
<attribute '__dict__' of 'A' objects> # What is this object?
Run Code Online (Sandbox Code Playgroud)

如果我这样做A.something = 10,这就进入了A.__dict__.什么这个<attribute '__dict__' of 'A' objects>发现A.__dict__.__dict__,当它包含的东西吗?

python metaprogramming class magic-methods

81
推荐指数
4
解决办法
8万
查看次数

在 __init__ 中为用户类设置默认/空属性

我有不错的编程水平,并从这里的社区中获得了很多价值。然而,我从来没有在编程方面进行过太多的学术教学,也没有与真正有经验的程序员一起工作。因此,我有时会为“最佳实践”而苦恼。

对于这个问题,我找不到更好的地方,尽管可能有讨厌这些问题的喷子,我还是发布了这个。如果这让你感到不安,很抱歉。我只是想学习,而不是惹你生气。

题:

当我创建一个新类时,我是否应该在init 中设置所有实例属性,即使它们是 None 并且实际上后来在类方法中分配了值?

MyClass 的属性结果见下例:

class MyClass:
    def __init__(self,df):
          self.df = df
          self.results = None

    def results(df_results):
         #Imagine some calculations here or something
         self.results = df_results
Run Code Online (Sandbox Code Playgroud)

我在其他项目中发现,当类属性只出现在类方法中时,它们可能会被埋没,而且还有很多事情要做。

那么对于经验丰富的专业程序员来说,什么是标准做法呢?为了可读性,您会在init 中定义所有实例属性吗?

如果有人有任何关于我可以在哪里找到这些原则的材料的链接,那么请将它们放在答案中,我们将不胜感激。我知道 PEP-8 并且已经在上面搜索了我的问题好几次,但找不到任何涉及此问题的人。

谢谢

安迪

python class instance-variables instance python-attrs

19
推荐指数
2
解决办法
2万
查看次数

self.arg = arg和self .__ dict __ ['arg'] = arg在Python中的区别

当我做一个课程定义时,我总是去

Class A(object):
    def __init__(self, arg):
        self.arg = arg
    def print_arg(self):
        print(self.arg)
Run Code Online (Sandbox Code Playgroud)

a = A('你好')

打印a.arg

'你好'

但是我在https://github.com/Pylons/webob/blob/master/src/webob/request.py的第133和134行中找到的东西让我想到我在A类中所做的与以下之间有什么区别:

Class B(object):
    def __init__(self, arg):
        self.__dict__['arg'] = arg
    def print_arg(self):
            print(self.arg)
Run Code Online (Sandbox Code Playgroud)

b = B('再见')

打印b.arg

'再见'

python python-2.7

5
推荐指数
1
解决办法
772
查看次数

究竟是什么在Python中定义了一个函数

__dict__保存描述对象的属性.但它显示了功能对象的空白字典.

我检查了Python:解释__dict__属性 ,但没有找到具体的答案,尽管thefourtheye给出了这个答案.

对于一个类,其中的变量定义了类,但对于一个函数,它不是.那么,究竟是什么定义了函数?

 def bar(x):
    return x + 1
 print(bar.__dict__) #{}

 class foo(object):
     def bar(x):
         return x + 1
 print(foo.__dict__)  #['bar': <function foo.bar at 0x058E0420>]
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
77
查看次数