self
Python 中这个词的目的是什么?我理解它指的是从该类创建的特定对象,但我不明白为什么它明确需要作为参数添加到每个函数.为了说明,在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)
谁能跟我说说这个?这不是我在(无可否认的有限)经历中遇到的事情.
我只是想简化我的一个类,并引入了一些与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)
为什么?
我想知道__init__
和__call__
方法之间的区别.
例如:
class test:
def __init__(self):
self.a = 10
def __call__(self):
b = 20
Run Code Online (Sandbox Code Playgroud) 我试图了解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)
为什么我需要描述符类?请使用此示例或您认为更好的示例进行说明.
什么是instance
和owner
这里?(in __get__
).所以我的问题是,第三个参数的目的是什么?
我该怎么称呼/使用这个例子?
现在很清楚元类是什么,有一个相关的概念,我一直在使用,而不知道它的真正含义.
我想每个人都用括号做错了,导致"对象不可调用"异常.更重要的是,使用__init__
并__new__
导致想知道这种血腥__call__
可以用于什么.
你能给我一些解释,包括魔术方法的例子吗?
以下类方法有什么区别?
是一个是静态而另一个不是?
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中的"方法"是什么?
在许多初学者的Python教程中,这个词的使用方式就像初学者已经知道Python的上下文中的方法一样.虽然我当然熟悉这个词的一般含义,但我不清楚这个术语在Python中的含义.所以,请向我解释一下"Pythonian"方法的用途.
一些非常简单的示例代码将非常受欢迎,因为图片值得千言万语.
对另一个Stack Overflow问题的评论指出,Python就像Ruby一样,因为它与"一切都是对象"有关,而Python中的所有内容都是一个对象,就像Ruby一样.
这是真的?像ruby一样,python中的所有东西都是对象吗?
两者在这方面有何不同,或者它们是否真的相同?例如,你可以拿一个号码来做我看过的红宝石:
y = 5.plus 6
Run Code Online (Sandbox Code Playgroud)
可以在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)
凭借我的理解,我可能会脱离标记,我只是对这个人的意思感到好奇.