24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1174  |  回复: 5

yjcmwgk

禁虫 (文坛精英)

密度泛函·小卒

优秀版主

[求助] 以前从未接触过类class,现在才开始学习class,出了个问题,诚心请教

各位高手好~我刚刚开始接触面向对象的程序设计,这里用的是python 2.7
我刚刚开始学习class,遇到问题肯定很幼稚,还请各位不吝赐教。
我规定了一个bird的class。这个bird类,有吃饭、喝水、起飞、降落、唱歌五种动作。
我在__int__(self)中规定了三种初始状态,self.hungry = True,self.thirsty = True,self.insky = False
但是当我运行这个class的时候,出现问题了。系统告诉我bird instance has no attribute 'hungry'
我是真正的啥也不懂,刚刚开始学习,翻书也没看到问题的解决方法。诚心请教,十分感谢各位高手。

class bird的定义如下
CODE:
>>> class bird:
        def __int__(self):
                self.hungry = True
                self.thirsty = True
                self.insky = False
        def eat(self):
                if (self.hungry == True):
                        print "I am eating! Aaaaaaaaaaah~"
                        self.hungry = False
                else:
                        print "I am full! I don not want to eat anything!"
        def drink(self):
                if (self.thirsty == True):
                        print "I am drinking water. Gu lu, Gu lu, Gu lu~"
                        self.thirsty = False
                else:
                        print "Too much water! Now I do not need water."
        def takeoff(self):
                if (self.hungry == True):
                        print "I am too hungry to fly. Please run bird.eat()"
                elif (self.thirsty == True):
                        print "I am too thirsty to fly. Please run bird.drink()"
                else:
                        if(self.insky == False):
                                print "I am ready to fly! Takeoff now! Pu pu pu pu ~"
                                self.insky = True
                        else:
                                print "I am already in the sky! Wow!"
        def landing(self):
                if (self.insky == True):
                        print "I am tired. Now I am going to takeoff."
                        self.insky = False
                else:
                        print "I have already on the land."
        def sing(self):
                print "Squawk! Squawk! Squawk!"

               

使用这个class的时候出现了问题,如下
CODE:
>>> b=bird()
>>> b.takeoff()

Traceback (most recent call last):
  File "", line 1, in
    b.takeoff()
  File "", line 19, in takeoff
    if (self.hungry == True):
AttributeError: bird instance has no attribute 'hungry'
>>> b.sing()
Squawk! Squawk! Squawk!
>>> b.eat()

Traceback (most recent call last):
  File "", line 1, in
    b.eat()
  File "", line 7, in eat
    if (self.hungry == True):
AttributeError: bird instance has no attribute 'hungry'
>>> b.drink()

Traceback (most recent call last):
  File "", line 1, in
    b.drink()
  File "", line 13, in drink
    if (self.thirsty == True):
AttributeError: bird instance has no attribute 'thirsty'
>>>

然后我尝试把def __int__(self)改成了def __int__(self, hungry, thirsty, insky),问题仍旧存在。
我该如何解决?非常感谢各位高手!

[ Last edited by yjcmwgk on 2012-6-21 at 14:37 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

6865804

荣誉版主 (文坛精英)

smallerpig

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
yjcmwgk: 金币+10, ★★★★★最佳答案, 谢谢您,但是还是有问题呀,请您继续不吝赐教 2012-06-21 14:53:29
类成员里面应该有方法跟属性,字段等。你只定义了方法。没定义鸟有“饿”这个状态
从前我只是一只被人看不起的小菜鸟,经过这么多年的努力拼搏,奋发图强之后,我终于成功的成长为了一只老菜鸟!www.smallerpig.com
2楼2012-06-21 14:45:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yjcmwgk

禁虫 (文坛精英)

密度泛函·小卒

优秀版主

引用回帖:
2楼: Originally posted by 6865804 at 2012-06-21 14:45:47
类成员里面应该有方法跟属性,字段等。你只定义了方法。没定义鸟有“饿”这个状态

可是 我看的教材上就是这样写的呀。我看的教材是《Python基础教程(第二版)》。第9.2节。
当然我完全信任这本书。有些人说这本书很好。一定是我自己理解错误。
这样呢,您能帮我改写一下这个class,我非常感激您!
我真的很讨厌自己做伸手党,我在量子化学版做斑竹的时候,对那些Gaussian的伸手党深恶痛绝。
但是到了python,我真是实在搞不定了呀。再次感谢!十分感谢
3楼2012-06-21 14:55:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yjcmwgk

禁虫 (文坛精英)

密度泛函·小卒

优秀版主

__metaclass__=type我加上了 仍旧错误 看来不是新旧类的问题
4楼2012-06-21 15:03:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
yjcmwgk: 金币+40, ★★★★★最佳答案, 太扯淡了,我这算是啥问题哟……这笔误……我还是太不熟悉python了……非常感谢您! 2012-06-21 17:02:38
楼主请注意,构造函数名字是__init__,
不是__int__

请run下面调试通过的代码,呵呵
CODE:
#! /usr/bin/env python

class bird:
        def __init__(self):
                self.hungry = True
                self.thirsty = True
                self.insky = False
        def eat(self):
                if (self.hungry == True):
                        print "I am eating! Aaaaaaaaaaah~"
                        self.hungry = False
                else:
                        print "I am full! I don not want to eat anything!"
        def drink(self):
                if (self.thirsty == True):
                        print "I am drinking water. Gu lu, Gu lu, Gu lu~"
                        self.thirsty = False
                else:
                        print "Too much water! Now I do not need water."
        def takeoff(self):
                if (self.hungry == True):
                        print "I am too hungry to fly. Please run bird.eat()"
                elif (self.thirsty == True):
                        print "I am too thirsty to fly. Please run bird.drink()"
                else:
                        if(self.insky == False):
                                print "I am ready to fly! Takeoff now! Pu pu pu pu ~"
                                self.insky = True
                        else:
                                print "I am already in the sky! Wow!"
        def landing(self):
                if (self.insky == True):
                        print "I am tired. Now I am going to takeoff."
                        self.insky = False
                else:
                        print "I have already on the land."
        def sing(self):
                print "Squawk! Squawk! Squawk!"


b = bird()
b.takeoff()

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
5楼2012-06-21 15:59:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
6楼2012-06-21 16:30:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yjcmwgk 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 药学求调剂 +12 喽哈加油 2026-04-14 14/700 2026-04-15 23:49 by 陈皮皮
[考研] 药学305求调剂 +7 玛卡巴卡boom 2026-04-11 7/350 2026-04-15 13:21 by 西北望—风沙
[考研] 药学305求调剂 +10 玛卡巴卡boom 2026-04-10 10/500 2026-04-14 15:55 by zs92450
[考研] 366求调剂 +11 不知名的小卅 2026-04-11 11/550 2026-04-14 15:50 by zs92450
[考研] 本科211,报考085601-310分 +16 ararak 2026-04-13 16/800 2026-04-14 14:55 by Delta2012
[考研] 300分求调剂 (085501机械专硕,本科扬大) +9 xu@841019 2026-04-11 10/500 2026-04-14 08:48 by 木木mumu~
[考研] 材料复试求调剂 +24 xhhdjdjsjks 2026-04-09 24/1200 2026-04-13 15:49 by 幸免 ..
[考研] 一志愿211 0703化学 346分求调剂 +26 土豆er? 2026-04-09 29/1450 2026-04-13 15:15 by 独醉梦孤城
[考研] 考研二轮调剂 +10 故人?? 2026-04-09 10/500 2026-04-13 09:55 by szhize
[考研] 一志愿浙大生物325分求调剂 +9 zysheng 2026-04-12 9/450 2026-04-12 22:31 by yuyin1233
[考研] 22408 352分求调剂 +5 努力的夏末 2026-04-09 5/250 2026-04-12 19:17 by wj165256
[考研] 电气专硕320求调剂 +6 小麻子111 2026-04-10 6/300 2026-04-12 10:54 by lemon6009
[考研] 085410 273求调剂 +10 X1999 2026-04-09 10/500 2026-04-12 09:24 by 逆水乘风
[考研] 材料工程日语考生求调剂 +7 0856?调剂 2026-04-10 7/350 2026-04-11 21:33 by 蓝云思雨
[考研] 求调剂 +3 胃痉挛累了 2026-04-11 5/250 2026-04-11 14:13 by luhong1990
[考研] 农学0904 312求调剂 +6 Say Never 2026-04-10 6/300 2026-04-11 10:33 by wwj2530616
[考研] 085402通信工程调剂,有4项学科竞赛国奖(电赛国二),硕士研究生调剂自荐信。 +5 m永o不v言o弃m 2026-04-09 5/250 2026-04-11 09:33 by zhq0425
[考研] 一志愿东北大学控制工程085406数二英二385,求调剂 +8 Ezra_Zhang 2026-04-09 8/400 2026-04-11 09:15 by 猪会飞
[考研] 求调剂 材料与工程 324分 专硕 +19 翩翩一书生 2026-04-10 21/1050 2026-04-10 11:41 by wp06
[考研] 348求调剂 +3 candyyyi 2026-04-09 3/150 2026-04-09 17:20 by 段伟艳
信息提示
请填处理意见