学习Python之【实例6-4】

本文记录了在学习《21天学通Python》过程中遇到的类实例属性访问错误,并给出了修正方案。通过调整初始化方法的调用,解决了属性未正确初始化导致的异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这段时间比较空闲,所以工作之余网上找了《21天学通Python》这本书来学习。书中的好多例子都有错误,不知道是不是印刷问题,所以记录一下:

【实例6-4】演示了在类中调用类自身的方法和全局函数的实例,代码如下:

def coord_chng(x,y):
    return (abs(x),abs(y))

class Ant:
    def __int__(self, x=0, y=0):
        self.x = x
        self.y = y
        self.disp_point()

    def move(self, x, y):
        x, y = coord_chng(x, y)
        self.edit_point(x, y)
        self.disp_point()

    def edit_point(self, x, y):
        self.x += x
        self.y += y

    def disp_point(self):
        print("当前位置:(%d, %d)" % (self.x, self.y))

ant_a = Ant()
ant_a.move(2, 4)
ant_a.move(-9, 6)

 

按F5:

Traceback (most recent call last):
  File "E:/Python/Demo/第6章/3.py", line 24, in <module>
    ant_a.move(2, 4)
  File "E:/Python/Demo/第6章/3.py", line 12, in move
    self.edit_point(x, y)
  File "E:/Python/Demo/第6章/3.py", line 16, in edit_point
    self.x += x
AttributeError: 'Ant' object has no attribute 'x'

------------------------------------------------------------------------------------------------------------

查看应该是没有初始化的缘故,调用修改为:

ant_a = Ant()
ant_a.__int__()
ant_a.move(2, 4)
ant_a.move(-9, 6)

F5:

当前位置:(0, 0)
当前位置:(2, 4)
当前位置:(11, 10)

OK!

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值