相关疑难解决方法(0)

Python:总是使用__new__而不是__init__?

我了解都__init____new__工作.我想知道是否有什么__init__可以做到的__new__不可以?

即可以使用__init__以下模式替换:

class MySubclass(object):
    def __new__(cls, *args, **kwargs):
        self = super(MySubclass, cls).__new__(cls, *args, **kwargs)
        // Do __init__ stuff here
        return self
Run Code Online (Sandbox Code Playgroud)

我问,因为我想让Python OO的这个方面更适合我.

python new-style-class

27
推荐指数
2
解决办法
4540
查看次数

__new__和__init__

可能重复:
Python使用__new__和__init__?

我试图了解如何使用这两种方法.我知道这__new__ 用于创建一个对象,同时__init__进行初始化.但是我不确定在创建对象时会发生什么.

  1. 这是否意味着__new____init__必须具有相同的参数?

  2. 如果我不使用相同的参数会发生什么?

python

5
推荐指数
2
解决办法
4418
查看次数

Python多重继承:动态做错了什么?

根据这个答案,如何__new____init__应该在Python中工作,

我编写了这段代码来动态定义和创建一个新的类和对象.

class A(object):
    def __new__(cls):
      class C(cls, B):
          pass
      self = C()
      return self

    def foo(self):
      print 'foo'

class B(object):
    def bar(self):
      print 'bar'

a = A()
a.foo()
a.bar()
Run Code Online (Sandbox Code Playgroud)

基本上,因为__new__A返回一个继承A和B的动态创建的C,它应该有一个属性bar.

为什么C 不能有一个bar属性?

python multiple-inheritance

0
推荐指数
2
解决办法
476
查看次数