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
相关产品推荐
相关产品推荐

