类——知识梳理

以下是我在Python类学习过程中(有C++基础),做的一些知识小结,仅供大家参考。

创建类
下面是通过一个实例来进行知识点小结。

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(selfO):
        print (selfO.name.title()+" rolled over!")

方法 init()
类中的函数称为方法,此方法__init__()是一个特殊的方法,开头和末尾各有两个下划线,当创建Dog的新实例时,Python会默认运行它。形参self必不可少且位于其他形参前面,调用此方法时,不用给self赋值,,每个与类相关联的方法调用都会自动传递实参self。

给属性指定默认值

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

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

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

my_new_car=Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())

指定默认值后,就无需包含为它提供初始值的实参。

修改属性的值

直接修改属性的值

my_new_car.odometer_reading = 23

通过方法修改属性的值

my_new_car.update_odometer(23)

通过方法对属性的值进行递增

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

继承

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

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

    def get_descriptive_name(self):
        return(str(self.year)+' '+self.make+' '+self.model)
    def fill_gas_tank(self):
        print("100")

class Battery():
	--snip--

class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)	#关联父类
        self.battery_size=70			#给子类定义属性
	self.battery = Battery()		#将实例用作属性
    def describe_battey(self):			#给子类定义方法
        print("This car has a "+str(self.battery_size)+'-kwh battery')

    def fill_gas_tank(self):			#重写父类的方法
        print("This car doesn't need a gas tank! ")

my_tesla=ElectricCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battey()
my_tesla.fill_gas_tank()

super() 是一个特殊函数,帮助Python将父类和子类关联起来。
可通过在子类中重写与父类同名的方法,可替代父类中该同名方法。

导入类

导入单个类
my_car.py

from car import Car

一个模块储存多个类
从一个模块中导入多个类
my_car.py


from car import Car,ElectricCar

导入整个模块
my_car.py

from module_name import #

在一个模块中导入另一个模块

									     参考书籍《Python编程从入门到实践》

										    2020.8.5_第三周
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值