python3类class心得

python3类class心得

用类的思想来模拟现实世界的汽车,汽车有品牌( name ) :byd,ford,xiaomi。汽车有剩余里程( odometer )初始值是0。汽车可以显示剩余里程( show_odometer )。电动汽车( ElecCar )可以充电( change ),汽油车( GasCar )可以加油( gas_up )。加油( gas_up )和充电( change )都可以使剩余里程( odometer )增加。一度电可以让剩余里程增加6km,一升油可以让剩余里程增加10km。

类的字段( Field )

汽车的品牌( name ) : byd ,ford ,xiaomi 和汽车的剩余里程( odometer ) 是变量类型的数据。这种从属于类或实例的变量叫做类的字段( Field )。

类的方法( Method )

显示剩余里程( show_odometer )、充电( change )、加油( gas_up )是用来实现某种功能的。这种属于类的函数来实现某些功能叫作类的方法( Method )。

类的属性( Attribute )= 类的字段( Field ) + 类的方法( Method )

示例:建立一个类并实例化一个对象

class Car:
    def show_odometer(self):
        self.odometer = 0
        print('Odometer:{}'.format(self.odometer))


car1 = Car()
Car.show_odometer(car1)
print('car1.odometer = ', car1.odometer)

结果

Odometer:0
car1.odometer =  0

逐行解释
class Car:
class 建立一个类要使用关键字 class 。
Car 自定义的类名,一般类名的首字母用大写。
: 尾部的冒号。

def show_odometer(self):
def 自定义函数的关键字 def 。
show_odometer() 自定义显示剩余里程 odometer 的函数名。

类的self

self 自定义函数 show_odometer() 的形式参数,表示通过类实例化出来的对象,在本例中代表下文中的 car1 。
self.odometer = 0 自定义一个对象car1的字段( Field ) odometer 并赋值为 0 。下文中的语句: print('car1.odometer = ', car1.odometer) 正确显示,表示这样是可行的。
【注意】语句: print('car1.odometer = ', car1.odometer) 要放在语句: Car.show_odometer(car1) 之后,因为语句: print('car1.odometer = ', car1.odometer) 在方法 show_odometer() 中。只有实例 car1 调用过方法 show_odometer() 之后实例car1 的字段(Field) car1.odometer 才会产生。
print(‘Odometer:{}’.format(self.odometer)) 通过print 显示类的字段( Field ) odometer 的值。

car1 = Car() 实例化一个类 car1 。
Car.show_odometer(car1) 根据类和类的方法的创建规则,调用类的方法( Method )show_odometer() 传入参数 car1 。这行可以更改为更加简洁的: car1.show_odometer() ,下文中都将使用这种更加简洁的方法调用类的方法( method )。
print('car1.odometer = ', car1.odometer) 显示实例 car1 的字段( Field ) odometer 。

类的__init__方法

下面我们在实例化汽车类的时候输入类的字段( Field )汽车品牌( name ),并直接设置类的字段( Field ) odometer = 0 。可以使用类的初始化( Initialization )方法 initinit 方法正如它的名称一样,在类实例化时会自动立即运行。我们可以把类的字段( Field)odometer 放入 init 方法中。上个例子可以改为:

class Car:
    def __init__(self):
        self.odometer = 0

    def show_odometer(self):
        print('Odometer:{}'.format(self.odometer))


car1 = Car()
print('car1.odometer = ', car1.odometer)
car1.show_odometer()

结果

car1.odometer =  0
Odometer:0

结果分析
在这个例子中: 把 self.odometer = 0 移动到了初始化方法 init() 中,可以通过后续语句:print('car1.odometer = ', car1.odometer) 看到 self.odometer 已经赋值成功,可以直接输出。
如何在初始化实例时传入汽车品牌( name ) 为 ford 呢?
示例

class Car:
    def __init__(self, name):
        self.name = name
        self.odometer = 0

    def show_odometer(self):
        print('{} odometer is {}'.format(self.name, self.odometer))


car1 = Car('ford')
print('car1.name = ', car1.name)
print('car1.odometer = ', car1.odometer)
car1.show_odometer()

结果

car1.name =  ford
car1.odometer =  0
ford odometer is 0

分析
在类 car 的语句块中
def init(self, name):
self.name = name
def init() 定义了初始化函数 init()
self 初始化函数 init() 的参数,这里指通过类 car 实例化的对象,也就是下文中的: car1 。
name 初始化函数 init()的参数,形式参数。由于name 是类 Car 初始化函数 init() 的参数,所以在类 Car 初始化时需要传入一个实际参数,下文中语句:car1 = Car(‘ford’)
实例化对象 car1 在通过类 Car 实例化时需要传入实际参数 ’ford’ 。
self.name = name 实例化对象的字段( field )self.name 被赋值为形式参数 name ,name 的值是传入的 ‘ford’ 。这行语句实现了对示例car1的字段( field ) name 的赋值 car1.name = ’ford’ 。

类的继承

现在我们通过类的继承的方法,新建2个新类,分别是电车类( ElecCar )和油车类( GasCar )。电车类( ElecCar )可以通过充电的方法( change() )增加剩余里程( odometer ),油车类可以通过加油的方法( gas_up() )剩余里程( odometer )。 电车的品牌( name )是 xiaomi ,油车的品牌( name )是 byd 。

class Car:
    def __init__(self, name):
        self.name = name
        self.odometer = 0

    def show_odometer(self):
        print('{} odometer is {} km.'.format(self.name, self.odometer))

class ElecCar(Car):
    def change(self):
        elec = int(input('Please input change electricity(kW/h):'))
        print('You have change {}kW/h electricity.'.format(elec))
        self.odometer = elec * 6

class GasCar(Car):
    def gas_up(self):
        gas = int(input('Please input gas up(L):'))
        print('You have gas up {}L gas.'.format(gas))
        self.odometer = gas * 10


car1 = Car('ford')
print('car1.name = ', car1.name)
print('car1.odometer = ', car1.odometer)
car1.show_odometer()

car2 = ElecCar('xiaomi')
car2.change()
car2.show_odometer()

car3 = GasCar('byd')
car3.gas_up()
car3.show_odometer()

结果

car1.name =  ford
car1.odometer =  0
ford odometer is 0 km.
Please input change electricity(kW/h):50
You have change 50kW/h electricity.
xiaomi odometer is 300 km.
Please input gas up(L):40
You have gas up 40L gas.
byd odometer is 400 km.

逐行解析
class ElecCar(Car): # 通过继承的方式新建了一个类 Elec 。
def change(self): # 类 ElceCar 的内置方法 change() 。
elec = int(input(‘Please input change electricity(kW/h):’)) # 让用户输入充电的数量,转换为数值型后,赋值给变量 elec 。
print(‘You have change {}kW/h electricity.’.format(elec)) # 显示对变量 elec 赋值成功。
self.odometer = elec * 6 # 由于类 Elec 是继承类 Car 建立的所以在类 Elec 中可以对类的字段( Field )赋值,每度电可以行驶6km。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qslife

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值