相关疑难解决方法(0)

5409
推荐指数
22
解决办法
75万
查看次数

自我的目的是什么?

selfPython 中这个词的目的是什么?我理解它指的是从该类创建的特定对象,但我不明白为什么它明确需要作为参数添加到每个函数.为了说明,在Ruby中我可以这样做:

class myClass
    def myFunc(name)
        @name = name
    end
end
Run Code Online (Sandbox Code Playgroud)

我很容易理解.但是在Python中我需要包括self:

class myClass:
    def myFunc(self, name):
        self.name = name
Run Code Online (Sandbox Code Playgroud)

谁能跟我说说这个?这不是我在(无可否认的有限)经历中遇到的事情.

python oop class self

1061
推荐指数
17
解决办法
81万
查看次数

为什么在__new __()后总是调用__init __()?

我只是想简化我的一个类,并引入了一些与flyweight设计模式相同的功能.

但是,我有点困惑,为什么__init__总是被称为__new__.我没想到这个.任何人都可以告诉我为什么会这样,以及我如何能够实现这个功能呢?(除了将实施放入__new__感觉相当hacky之外.)

这是一个例子:

class A(object):
    _dict = dict()

    def __new__(cls):
        if 'key' in A._dict:
            print "EXISTS"
            return A._dict['key']
        else:
            print "NEW"
            return super(A, cls).__new__(cls)

    def __init__(self):
        print "INIT"
        A._dict['key'] = self
        print ""

a1 = A()
a2 = A()
a3 = A()
Run Code Online (Sandbox Code Playgroud)

输出:

NEW
INIT

EXISTS
INIT

EXISTS
INIT
Run Code Online (Sandbox Code Playgroud)

为什么?

python design-patterns class-design

525
推荐指数
14
解决办法
26万
查看次数

__init__和__call__有什么区别?

我想知道__init____call__方法之间的区别.

例如:

class test:

  def __init__(self):
    self.a = 10

  def __call__(self): 
    b = 20
Run Code Online (Sandbox Code Playgroud)

python oop class object callable-object

457
推荐指数
13
解决办法
21万
查看次数

理解__get__和__set__以及Python描述符

试图了解Python的描述符是什么以及它们对什么有用.但是,我没有成功.我理解它们是如何工作的,但这是我的疑惑.请考虑以下代码:

class Celsius(object):
    def __init__(self, value=0.0):
        self.value = float(value)
    def __get__(self, instance, owner):
        return self.value
    def __set__(self, instance, value):
        self.value = float(value)


class Temperature(object):
    celsius = Celsius()
Run Code Online (Sandbox Code Playgroud)
  1. 为什么我需要描述符类?请使用此示例或您认为更好的示例进行说明.

  2. 什么是instanceowner这里?(in __get__).所以我的问题是,第三个参数的目的是什么?

  3. 我该怎么称呼/使用这个例子?

python descriptor

287
推荐指数
5
解决办法
10万
查看次数

什么是Python中的"可调用"?

现在很清楚元类是什么,有一个相关的概念,我一直在使用,而不知道它的真正含义.

我想每个人都用括号做错了,导致"对象不可调用"异常.更重要的是,使用__init____new__导致想知道这种血腥__call__可以用于什么.

你能给我一些解释,包括魔术方法的例子吗?

python callable

286
推荐指数
8
解决办法
23万
查看次数

Python中的类方法差异:绑定,未绑定和静态

以下类方法有什么区别?

是一个是静态而另一个不是?

class Test(object):
  def method_one(self):
    print "Called method_one"

  def method_two():
    print "Called method_two"

a_test = Test()
a_test.method_one()
a_test.method_two()
Run Code Online (Sandbox Code Playgroud)

python

233
推荐指数
4
解决办法
15万
查看次数

你能解释一下闭包(因为它们与Python有关)吗?

我一直在阅读很多关于闭包的内容,我认为我理解它们,但是没有为自己和他人蒙上阴影,我希望有人可以尽可能简洁明了地解释闭包.我正在寻找一个简单的解释,可以帮助我理解我想要使用它们的地点和原因.

python closures functional-programming

78
推荐指数
6
解决办法
1万
查看次数

Python中的"方法"是什么?

任何人都可以用非常简单的术语向我解释Python中的"方法"是什么?

在许多初学者的Python教程中,这个词的使用方式就像初学者已经知道Python的上下文中的方法一样.虽然我当然熟悉这个词的一般含义,但我不清楚这个术语在Python中的含义.所以,请向我解释一下"Pythonian"方法的用途.

一些非常简单的示例代码将非常受欢迎,因为图片值得千言万语.

python methods

69
推荐指数
4
解决办法
18万
查看次数

像ruby一样,python中的所有东西都是对象吗?

对另一个Stack Overflow问题的评论指出,Python就像Ruby一样,因为它与"一切都是对象"有关,而Python中的所有内容都是一个对象,就像Ruby一样.

这是真的?像ruby一样,python中的所有东西都是对象吗?

两者在这方面有何不同,或者它们是否真的相同?例如,你可以拿一个号码来做我看过的红宝石:

y = 5.plus 6
Run Code Online (Sandbox Code Playgroud)

可以在Python中以相同的方式完成吗?

ruby python language-comparisons object

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

Python中的函数对象是什么?

我总是在Python中听到这个声明(对于诸如装饰器之类的主题,当你传递函数时等)但是从未真正看到过这方面的细节.

例如,是否可以创建一个c只有一个抽象方法的类,该方法使用一组打开和关闭的括号进行调用.

i.e class c:
       @abstractmethod
       def method_to_be_called_by():
        ... 
Run Code Online (Sandbox Code Playgroud)

所以你可以拥有

c(whatever parameters are required)
Run Code Online (Sandbox Code Playgroud)

凭借我的理解,我可能会脱离标记,我只是对这个人的意思感到好奇.

python methods class function

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