jordanis1 2022-04-29 20:16 采纳率: 80%
浏览 56
已结题

有些参数为什么不放进__init__()中?

关于这段代码:

class Car:
def init(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0

2个问题:
1、为什么不把odometer_reading=0 放进 init()中?然后代码如下:
class Car:
def init(self,make,model,year,odometer_reading=0):
self.make = make
self.model = model
self.year = year
self.odometer_reading = odometer_readming

2、关于self,虽然知道他应该是一个传递参数的功能,但是作为初学者,其实还不是完全理解,希望得到解惑!谢谢

  • 写回答

5条回答 默认 最新

  • 溪风沐雪 2022-04-29 20:59
    关注

    不放到init函数参数里的唯一原因就是这个变量初始值就是0,不允许改变,就以这个Car为例,里程数在一辆车刚被造出来的时候,必然是0,要不然你新造的车就有了1万公里的里程数,那总不能是在工厂里跑出来的,如果你非要放到init函数中,那这个类就应该描述的是新车和二手车的通用类,因为只有二手车初始的里程数才会不为0,这两种写法都没错,区别就在于初始值必须为0是否有实际意义

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 修改了问题 4月29日
  • 创建了问题 4月29日

悬赏问题

  • ¥15 基于作物生长模型下,有限水资源的最大化粮食产量的资源优化模型建立
  • ¥20 关于变压器的具体案例分析
  • ¥15 生成的QRCode圖片加上下載按鈕
  • ¥15 板材切割优化算法,数学建模,python,lingo
  • ¥15 科来模拟ARP欺骗困惑求解
  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式