You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3 OOP入门:能否在__init__方法内调用类方法?

在Python的__init__方法中调用类内方法的可行性

当然允许在__init__方法里调用类中的其他方法啦!不过你当前的代码存在一个小语法问题,咱们来拆解说明:

你的代码问题所在

你写的self.perimeter = get_perimeter(self)是错误的——在类的实例方法内部,调用当前实例的其他方法时,必须通过self.前缀来引用,否则Python会把get_perimeter当成全局函数,找不到就会报错。

修正后的正确代码

class Square:
    def __init__(self, side):
        self.side = side
        # 通过self调用类内的get_perimeter方法
        self.perimeter = self.get_perimeter()
    
    def get_perimeter(self):
        return self.side * 4

# 测试验证
test_square = Square(10)
print(test_square.perimeter)  # 输出: 40

为什么可以这么做?

__init__本质上就是类的一个特殊实例方法,它的作用是在创建对象时完成初始化工作。和类里的其他实例方法一样,它可以通过self访问当前实例的所有属性和方法。这种写法非常常见,比如你需要在初始化时计算一些依赖于输入属性的值,或者调用辅助方法完成复杂的初始化逻辑,都是完全合理的。

额外小优化(可选)

如果get_perimeter方法只在初始化时用到,也可以直接在__init__里计算周长,省去单独的方法:

class Square:
    def __init__(self, side):
        self.side = side
        self.perimeter = side * 4

不过保留方法的写法更符合OOP的封装思想,后续如果需要修改周长的计算逻辑,只需要修改get_perimeter方法即可,扩展性更好。

内容的提问来源于stack exchange,提问作者user7328687

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:28:32