Python 学习入门之类

Python 学习入门之类

面向对象编程是最有效的软件编写方法之一。在面向对象编程中,编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。
类的简单示例

class Dog():
    def __init__(self,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() + " roll over.")

类中的函数称为方法,有关函数的一切都适用于方法,唯一重要的差别是调用方法的方式
其中__init__()是一个特殊的方法,每当根据类创建新实例时,python都会自动运行他。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突
类中每个属性都要必须有初始值,若要给属性指定默认值,可在__init__()指定初始值,且无需给它提供初始值的形参
我们创建Dog实例时,Python将调用Dog类方法__init__()。我们将通过实参向Dog()传递名字和年龄;self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最后两个形参提供值

在python2.7 中创建类

在python2.7 中创建类时,需要做细微的修改————在括号内包含单词object

class ClassName(object):
    --snip--

根据类创建实例

可将类视为有关如何创建实例的说明。

my_dog = Dog("willie",6)

访问属性

print("My dog's name is " + my_dog.name.title())
print("My dog is " + str(my_dog.age) + " years old")

调用方法

my_dog.sit()
my_dog.roll_over()

修改属性的值

直接修改属性的值

my_dog.age = 7
print("My dog is " + str(my_dog.age) + " years old")

通过方法修改属性的值

class Car():
    def __init__(self,make,model,year):
        self.make = make
        self. model =model
        self.year= year
        self.odometer_reading = 0
    
    def update_odometer (self,mileage):
        self.odometer_reading = mileage
    
    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.odometer_reading) + " miles on it.")

my_car = Car("audi","A6",2016)
print(my_car.get_descriptive_name())
my_car.update_odometer(23)
my_car.read_odometer()

继承

一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。
子类继承了其父类所有属性和方法,同时还可以定义自己的属性和方法

子类的方法__init__()

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

class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)

my_tesla = ElectricCar("tesla","modle s",2018)
print(my_tesla.get_descriptive_name())

在python 2.7中的继承

class ElectricCar(Car):
    def __init__(self,make,model,year):
        super(ElectricCar,self).__init__(make,model,year)

给子类定义属性和方法

让一个类继承另一个类后,可添加区分父类所需的新属性和方法

class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)
        self.battery_size = 70

    def decribe_battery(self):
        print("This car has a " + str(self.battery_size) + "-kwh battery.")

my_tesla = ElectricCar("tesla","modle s",2018)
print(my_tesla.get_descriptive_name())
my_tesla.decribe_battery()

重写父类的方法

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

猜你喜欢

转载自blog.csdn.net/fzx1123/article/details/86439377