- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前想知道为什么这段普通代码的输出结果出乎我的意料:
class Product(object):
price = 0
def __init__(self, tmp_price):
self.price = tmp_price
class Market(object):
products = []
def __init__(self):
self.products.append(Product(10))
a = Market()
b = Market()
print a.products[0]
print b.products[0]
print len(a.products)
确实,我得到了一些输出:
<__main__.Product object at 0x7fe5899e46d0>
<__main__.Product object at 0x7fe5899e46d0>
2
谁有解释吗?我想这与 python 处理引用的方式有关,但...
最佳答案
问题出在您的这部分代码中:
class Market(object):
products = [] # products belongs to the class and is shared by all instances!
def __init__(self):
self.products.append(Product(10)) # appending to the 'products' class atribute
products
属性属于类并且由所有实例共享。类的所有实例都可以访问类属性。当您从自身 (self.products
) 引用产品时,Python 不会找到属于该实例的 products
,因此它会查看是否有 products
可以在类中找到。
你真正想要的是:
class Market(object):
def __init__(self):
self.products = [] # products belongs to the instance
self.products.append(Product(10))
关于Python 及其引用资料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754970/
我正在使用passport.js 为我的node.js 应用程序提供OAuth 身份验证。但我确实有一个疑问: 当我在身份验证时收到配置文件对象(当您定义 OAuth 策略时)时,该对象对于所有提供商
我正在尝试对 wordpress 布局进行解码/逆向工程。我正在浏览 CSS 文件,无法弄清楚这个长长的菜单 mumbo-jumbo 是什么! 我不是要任何人检查代码,而是让我知道我在看什么。这些似乎
所以我尝试制作一个包含私有(private)配置文件的 symfony 项目,并且我使用 FriendsOfSymfony,但是如果我创建两个用户,每个人都可以看到其他人上传的文件。我尝试在多个网站上
我正在编写一个需要使用已登录 G+ 用户的公开个人资料图片的 JS 应用。 如果我有用户 ID,我可以使用 Google+ API 查询个人资料数据。 https://developers.googl
我看过很多关于 facebook 身份验证的帖子,要么是旧的,要么不能正常工作。 然而,最终我在我的项目中做了一些可行但不完全的东西。这是我要求的代码 var facebookAuth
我是一名优秀的程序员,十分优秀!