美文网首页
Python入门之类

Python入门之类

作者: 我的袜子都是洞 | 来源:发表于2019-07-17 19:20 被阅读0次

创建类

class Dog():
    """模拟小狗"""

    def __init__(self, name, age):
        """初始化属性name和age"""
        self.name = name
        self.age = age

    def sit(self):
        """模拟小狗蹲下"""
        print(self.name.title() + " is now sitting")

    def roll_over(self):
        """模拟小狗打滚"""
        print(self.name.title() + " rolled over!")

方法init()

类中的函数称为方法。__init__()是一个特殊的方法,每当根据Dog类创建新实例时都会自动运行它。这个方法中自动传递实参self,它是指向本身的引用,让实例能够访问类中的属性和方法。

根据类创建实例

class Dog():
    --snip--

my_dog = Dog('willie', 6)

访问属性

要访问实例属性,使用句点表示法。

my_dog.name

调用方法

使用句点调用类中的方法。

class Dog():
    --snip--

my_dog = Dog('willie', 6)
my_dog.sit()

创建多个实例

class Dog():
    --snip--

my_dog = Dog('willie', 6)
my_dog = Dog('lucy', 3)

继承

编写类时,并非总是要从空白开始。如果要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

子类的方法init()

创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。为此,子类的方法__init__()需要父类施以援手。

class Car():
    """模拟汽车"""

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odmeter_reading = 0

    def get_descriptive_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()

    def read_odometer(self):
        print("This car has " + str(self.odmeter_reading) + " miles on it.")

    def update_odmeter(self, mileage):
        if mileage >= self.odmeter_reading:
            self.odmeter_reading = mileage
        else:
            print("You can't roll back an odometer!")

    def increment_odometer(self, miles):
        self.odometer_reading += miles

class EletricCar(Car):
    """电动汽车的独特"""

    def __init__(self, make, model, year):
        """初始化父类的属性"""
        super.__init__(make, model, year)

重写父类的方法

对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其重写。为此,可在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方法,而只关注你在子类中定义的相应方法。

相关文章

网友评论

      本文标题:Python入门之类

      本文链接:https://www.haomeiwen.com/subject/ifwclctx.html