每日学点python之十二(面向对象一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37806112/article/details/86031114

面向对象编程的两个非常重要的概念:类和对象

区别:

      对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类。类就相当于制造飞机时的图纸,用它来进行创建出来的飞机就相当于对象。

类的构成:

类(Class) 由3个部分构成

  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许对进行操作的方法 (行为)

范例:

   

魔法方法之__init__():

        在以上的范例中我们给BMW这个对象添加了2个属性,wheelNum(车的轮胎数量)以及color(车的颜色),试想如果再次创建一个对象的话,肯定也需要进行添加属性,显然这样做很费事,那么有没有办法能够在创建对象的时候,就顺便把车这个对象的属性给设置呢?

答:__init__()方法

demo:

# 定义汽车类
class Car:
    def __init__(self):
        self.wheelNum = 4
        self.color = '蓝色'
    def move(self):
        print('车在跑,马在吼')

# 创建对象
BMW = Car()
print('车的颜色为:%s'%BMW.color)
print('车轮胎数为:%d'%BMW.wheelNum)

总结:

        1.__init__()方法,在创建一个对象时被默认调用,不需要手动调用

        2.__init__(self)方法中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外还需要2个形参,例如__init__(self,x,y)

        3.__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去

魔法方法之__str__():

        如果把BMW使用print进行输出的话,可以输出BMW对象在内存中的地址。但是当我们定义了__str__(self),我们再输出对象,那会就会打印这个方法return的数据。

demo:

class Car:
    def __init__(self, newWheelNum, newColor):
        self.wheelNum = newWheelNum
        self.color = newColor
    def __str__(self):
        msg = "嘿。。。我的颜色是" + self.color + "我有" + int(self.wheelNum) + "个轮胎..."
        return msg
    def move(self):
        print('车在跑,马在跑')
BMW = Car(4, "白色")
print(BMW)

      

理解self:

         有没有发现魔法方法中的第一个参数老是self,中文意思为自己,我们可以把self当做C++中类里的this指针,就是对象自身的意思;某个对象调用其方法时,python解释器会把这个对象作为第一个参数传递给self,所以开发者只需要传递后面的参数即可

 

猜你喜欢

转载自blog.csdn.net/m0_37806112/article/details/86031114