【问题标题】:Why use __init__ and self when we can use simple methods当我们可以使用简单的方法时,为什么还要使用 __init__ 和 self
【发布时间】:2019-06-24 20:14:43
【问题描述】:

当我们可以使用方法时,我对为什么在定义类时使用 init 和 self 感到困惑。下面的例子说明了我的困惑:

示例 1 利用 init 和 self:

class car:
    def __init__(self,model,color):
        self.model = model
        self.color = color
    def show(self):
        print('model is', self.model)
        print('color is', self.color)    

audi = car('audi a4', 'blue')
ferrari = car('ferrari 488','green')

audi.show()
model is audi a4
color is blue

ferrari.show()
model is ferrari 488
color is green

示例2使用方法:

class car:
    def audifeatures(car, model, color):
        print ('car is', car, 'model is', model, 'color is', color)
    def ferrarifeatures(car, model, color):
        print ('car is', car, 'model is', model, 'color is', color)

car.audifeatures('audi','x8','black')
car is audi model is x8 color is black

car.ferrarifeatures('ferrari','f5','red')
car is ferrari model is f5 color is red

【问题讨论】:

  • car.audifeatures('ferrari','f5','red') 仍会为您提供法拉利说明。
  • 并且您不会有 instances 的汽车。你只有一个带有一些静态方法的静态类。
  • 这将是一个很好的入门:python-course.eu/classes_and_type.php

标签: class methods python-3.7 init self


【解决方案1】:

您的print 语句生成的短语“car is audi model is x8 color is black”只是单词;你只是在形成一个使用 words “模型”和“颜色”的字符串(car 类基本上是不相关的)。

initself 是关于定义一个具有属性的对象,以便您可以进行基于对象的编程; car 类生成一个 instance,它实际上 具有一个模型和一个颜色。

这就像一只重复“我六英尺高”这句话的鹦鹉和一个实际上六英尺高的人之间的区别。

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2011-12-15
    • 2015-03-02
    • 1970-01-01
    相关资源
    最近更新 更多