相关疑难解决方法(0)

Python的属性装饰器不能按预期工作

class Silly:
    @property
    def silly(self):
        "This is a silly property"
        print("You are getting silly")
        return self._silly

    @silly.setter
    def silly(self, value):
        print("You are making silly {}".format(value))
        self._silly = value

    @silly.deleter
    def silly(self):
        print("Whoah, you killed silly!")
        del self._silly

s = Silly()
s.silly = "funny"
value = s.silly
del s.silly
Run Code Online (Sandbox Code Playgroud)

但它没有打印出"你变得愚蠢","你正在制造愚蠢的搞笑",......正如预期的那样.不知道为什么.亲爱的,你能让我弄清楚吗?

提前致谢!

python properties class decorator new-style-class

4
推荐指数
1
解决办法
1522
查看次数

在 python 2.7 中扩展类,super() 的用法

也许这是一个愚蠢的问题,但为什么这段代码在 python 2.7 中不起作用?

from ConfigParser import ConfigParser

class MyParser(ConfigParser):
    def __init__(self, cpath):
        super(MyParser, self).__init__()
        self.configpath = cpath
        self.read(self.configpath)
Run Code Online (Sandbox Code Playgroud)

它失败于:

TypeError: must be type, not classobj
Run Code Online (Sandbox Code Playgroud)

在线上super()

python inheritance python-2.7

4
推荐指数
1
解决办法
4046
查看次数

(对象)在python中的类名旁边做了什么?

当你在python中声明一个类时,我经常看到(object)在类名旁边写的.

class someClass(object):
    def __init__(self, some_variable):
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

这和下面写的一样吗?

class someClass: # didn't write (object) here.
    def __init__(self, some_variable):
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

我觉得它们的运作方式没有任何区别.难道仅仅是一种澄清,someClasssubclassobjectobject当我做一个明确的写作时,这是一个好习惯class吗?

python class object

4
推荐指数
1
解决办法
2612
查看次数

类classname:AND class classname()之间的区别:AND class classname(object):

我正在学习python并向OOP介绍自己.但是,我正在努力理解如何最好地构建类,特别是,以下类定义之间的差异以及何时应该使用每个类:

class my_class:
  content...

class my_class():
  content...

class my_class(object):
  content...
Run Code Online (Sandbox Code Playgroud)

我一直在阅读非常有用的python在线帮助,虽然没有找到这个问题的具体答案.所以任何想法或推荐的参考将不胜感激,谢谢.

python oop class

4
推荐指数
1
解决办法
285
查看次数

Python:需要参数时使用super()调用基类的__init __()方法

我试图__init__()在一个超类中调用该方法,其中所说的方法接受参数,但是似乎不起作用。请参见下面的代码:

>>> class A:
        def __init__(self, param1, param2):
            self._var1 = param1
            self._var2 = param2

>>> class B(A):
        def __init__(self, param1, param2, param3):
            super(B, self).__init__(param1, param2)
            self._var3 = param3


>>> a = A("Hi", "Bob")
>>> a._var1
'Hi'
>>> a._var2
'Bob'
>>> 
>>> b = B("Hello", "There", "Bob")

Traceback (most recent call last):
  File "<pyshell#74>", line 1, in <module>
    b = B("Hello", "There", "Bob")
  File "<pyshell#69>", line 3, in __init__
    super(B, self).__init__(param1, param2)
TypeError: must be type, not classobj
>>> …
Run Code Online (Sandbox Code Playgroud)

python inheritance super

4
推荐指数
1
解决办法
1211
查看次数

需要帮助理解python中的"TypeError:default __new__不带参数"错误

出于某种原因,我无法左右让我的头__init____new__.我有一堆从终端运行良好的代码,但当我将其作为Google快速搜索框的插件加载时,我收到错误TypeError: default __new__ takes no parameters.

我一直在读这个错误,这让我的脑子旋转起来.目前我有3个类,没有子类,每个类都有自己def的类.我从不使用def __init__def __new__,但我已经明确感觉这些是给我错误的功能(或缺少它).

我不知道如何将代码汇总到一个在这里有用的代码片段,因为我有点过头,但整个脚本都可以在github上找到.不要指望任何人为我修改我的代码,我只是在我的智慧结束.一个简单的(简单的英语,而不是python文档的引用,我已经阅读了20次,但仍然没有真正理解)探索为什么会出现这个错误,或者为什么我应该,或者不是,使用__init__和/或__new__功能将得到认真的赞赏.

python init typeerror

3
推荐指数
1
解决办法
3368
查看次数

为什么继承我们从类'对象'创建的任何类是一个好习惯?

在python中,为什么建议继承我们从类中创建的任何类object,为什么不直接将它作为基类?我注意到一个重要的事情是,__slots__如果我将我的类作为基类(而不是作为类的子类object),则声明不起作用.通过从班级继承我的班级,我还有哪些其他优点/缺点object

python class

3
推荐指数
1
解决办法
190
查看次数

Python类解释

为什么Python将这些类视为不同的数据类型?

>>> class A:
...    pass
...
>>> class B(object):
...     pass
...
>>> a = A()
>>> b = B()
>>> type(A)
<type 'classobj'>
>>> type(B)
<type 'type'>
>>> type(a)
<type 'instance'>
>>> type(b)
<class '__main__.B'>
Run Code Online (Sandbox Code Playgroud)

我很新.所以我真的不明白为什么它将所有这些视为不同的数据类型.它们都是类,所以看起来它们应该是相同的.

python types class object instance

3
推荐指数
1
解决办法
828
查看次数

类返回语句不打印任何输出

我正在学习类和我的return语句有问题(这是一个声明吗?我希望如此),程序什么都不打印,它只是结束而没有做任何事情.

class className:
    def createName(self, name):
        self.name = name
    def displayName(self):
        return self.name
    def saying(self):
        print("Hello %s" % self.name)

first = className()
second = className()

first.createName("Jack")
second.createName("Joy")

first.displayName()
second.displayName()
Run Code Online (Sandbox Code Playgroud)

我知道我做的事情显然是错的,但我真的不知道是什么.我很感激一些帮助.

python return class

2
推荐指数
1
解决办法
3144
查看次数

M级:或M级():?

对于没有继承的类定义,之间是否存在任何差异或风格偏好:

class M:
    pass
Run Code Online (Sandbox Code Playgroud)

class M():
    pass
Run Code Online (Sandbox Code Playgroud)

我在PEP8中找不到它.

python coding-style python-3.x

2
推荐指数
1
解决办法
79
查看次数