鱼C论坛

 找回密码
 立即注册
查看: 1176|回复: 6

[已解决]求助20鱼币。 建立了一个类。 保存list 数据

[复制链接]
发表于 2018-2-25 20:24:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jensonl 于 2018-2-25 20:26 编辑

求助:
从 on-tick 获得数据。

由于每次获得的数据 分为‘名字‘,’值‘,我想调用 这个Rate的类。 进行分类计算

例如获得的字符串 x 和数值price , 然后将获得的price 存入 以x 为名字的列表中。

由于获得的数据 是每秒都会获得,所以希望 这个 x为名字的列表中  可以持续添加 price的值

class Rate:
    def __init__(self,x):
        self.x = x

    def creatlist(self):
        self.x = []
        print(self.x)
            
    def price(self, price):
        self.price = price
        self.x.append(self.price)
       
    def getatt(self):
        print(self.x)
-------------------------------------------------------------------------------------
运行情况如下:
>>> a = Rate('60000')
>>> a.creatlist()
[]
>>> a.price(5.5)
>>> a.getatt()
[5.5]
>>> a.price(4)
Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    a.price(4)
TypeError: 'float' object is not callable
>>>
运行到第二次 就报错了。 我想把列表变成  [5.5, 4]


请教大神们,要如何修改 能把列表数据一直存入。。。 求助。谢谢

求助奖励20鱼币
最佳答案
2018-2-25 20:46:07
def price(self, price):
        self.price = price
        self.x.append(self.price)

這裡你的方法跟屬性名重複了!
a.price = 5.5       ← 屬性!
a.price(4) = 5.5(4)  ←出錯原因

把方法名改成def addprice(self, price)就好  記得屬性跟方法別重複命名!!

评分

参与人数 1鱼币 +10 收起 理由
新手·ing + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-25 20:46:07 | 显示全部楼层    本楼为最佳答案   
def price(self, price):
        self.price = price
        self.x.append(self.price)

這裡你的方法跟屬性名重複了!
a.price = 5.5       ← 屬性!
a.price(4) = 5.5(4)  ←出錯原因

把方法名改成def addprice(self, price)就好  記得屬性跟方法別重複命名!!

评分

参与人数 1鱼币 +10 收起 理由
新手·ing + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-25 20:49:46 | 显示全部楼层
class Rate:
    def __init__(self,x):
        self.x = x

    def creatlist(self):
        self.x = []
        print(self.x)
            
    def price(self, price1):
        self.x.append(price1)
        
    def getatt(self):
        print(self.x)

>>> a = Rate('60000')
>>> a.creatlist()
[]
>>> a.price(5.5)
>>> a.getatt()
[5.5]
>>> a.price(4)
>>> a.getatt()
[5.5, 4]

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
jensonl + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-25 20:55:32 | 显示全部楼层
樓上大大的答案不錯XD
可以請教一下
甚麼時候需要用self.price  ←這算類屬性?
甚麼時候用price就好呢?   ←這算局部變數?
我這兩個都搞不懂...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-25 21:01:58 | 显示全部楼层
laurence5181 发表于 2018-2-25 20:55
樓上大大的答案不錯XD
可以請教一下
甚麼時候需要用self.price  ←這算類屬性?

如果只在一个函数(方法)中使用,两种都可以,例如:
class A():
    def a1(self, x):
        print(x)

    def a2(self):
        print(x)
>>> a = A()
>>> a.a1(12)
12
>>> a.a2()
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    a.a2()
  File "D:\py\test2.py", line 6, in a2
    print(x)
NameError: name 'x' is not defined
class A():
    def a1(self, x):
        self.x = x
        print(self.x)

    def a2(self):
        print(self.x)
>>> a = A()
>>> a.a1(12)
12
>>> a.a2()
12
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-2-25 21:28:56 | 显示全部楼层
第一個x是屬於方法內局部變量  所以a2不能調用
第二的因為self.x = x   把局部變數→實例變量  該實例都能調用?
這樣理解對嗎?   因為很少用到類 對這方面很不熟悉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-26 12:54:16 | 显示全部楼层
laurence5181 发表于 2018-2-25 21:28
第一個x是屬於方法內局部變量  所以a2不能調用
第二的因為self.x = x   把局部變數→實例變量  該實例都能 ...

可以这样理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 02:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表