python中“类”
方法
_ init_()
一种默认方法。
class Dog():
def __init__(self, name, age): # initialize初始化的缩写
self.name = name #这两句有点难理解。本质上说把右边的name和上边的变量name换成n,age同,不影响结果。这句话是说,左边是:变量self作为类的属性name,右边是变量name。右边后期是要赋值的,右边传入什么实参会储存在变量name里,这个储存结果到时候就是self作为类的属性name。就比如说,已经初始化了一条共同意义上的狗,这个时候的这条狗就是self,这条狗有name和age两个共同意义上的属性,将来实例化的过程中,要靠_init_中的变量name和age来传递实例的实参,当然这个变量可以叫任何名字,只要正确传递给这个叫self的初始化的狗就行。
self.age = age
def sit(self):
print(self.name.title() + "is sitting.")
def roll_over(self):
print(self.name.title() + " rolled over")
my_dog = Dog('willie', 6) #self就是将要创建的实例化的本身,前边的所有self这个时候换成my_dog运行结果都是一样的,已经试过了。
print(my_dog)#类的实例化
print(type(my_dog))
print("我的狗名字是:" + my_dog.name.title() + "。")
print("我的狗有" + str(my_dog.age) + "了。")
my_dog.sit()
my_dog.roll_over()
输出
<__main__.Dog object at 0x000001CF3EFE4A30>
<class '__main__.Dog'>
我的狗名字是:Willie。
我的狗有6了。
Willieis sitting.
Willie rolled over
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):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def raed_oaometer(self):
print("this car has " + str(self.odometer_reading) + " miles on it." )
my_new_car = Car('audi','a4','2016')
print(my_new_car.get_descriptive_name())
my_new_car.raed_oaometer()
输出
2016 Audi A4
this car has 0 miles on it.
修改属性的值
直接修改
my_new_car.odometer_reading = 23
my_new_car.raed_oaometer()
通过方法修改
定义了一个update_odometer()的函数来实现
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):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def raed_oaometer(self):
print("this car has " + str(self.odometer_reading) + " miles on it." )
def update_odometer(self,mileage):
self.odometer_reading = mileage
if mileage >= self.odometer_reading
self.odometer_reading = mileage
else:
print("不能把里程数往回调")
my_new_car = Car('audi','a4','2016')
my_new_car.update_odometer(23)
my_new_car.raed_oaometer()
通过方法对属性的值进行递增
继承
编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类 而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
电动汽车是汽车的分类。
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):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def raed_oaometer(self):
print("this car has " + str(self.odometer_reading) + " miles on it." )
def update_odometer(self,mileage):
self.odometer_reading = mileage
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("不能把里程数往回调")
my_new_car = Car('audi','a4','2016')
my_new_car.update_odometer(23)
print("\n---------my new car---------")
my_new_car.raed_oaometer()
#继承
class ElectricCar(Car): #创建子类时。父类必须在括号内指定父类名字。
def __init__(self,make,model,year): #方法_init_()接受创建Car实例所需的信息
super().__init__(make,model,year) #这行代码让python调用ElectricCar的父类的方法_init_(),让ElectricCar实例包含父类的
# 所有属性。super(),superclass,超类,父类。
self.battery_size = 70 #电动车特有的电池属性,初始化电池容量
def describle_battery(self):
print("this car has " + str(self.battery_size) + "kwh battery.")
my_tesla = ElectricCar ('tesla','model s',2016)
print("\n---------my tesla------------")
print(my_tesla.get_descriptive_name())
my_tesla.describle_battery()
输出
---------my new car---------
this car has 23 miles on it.
---------my tesla------------
2016 Tesla Model S
this car has 70kwh battery.
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):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def raed_oaometer(self):
print("this car has " + str(self.odometer_reading) + " miles on it." )
def update_odometer(self,mileage):
self.odometer_reading = mileage
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("不能把里程数往回调")
my_new_car = Car('audi','a4','2016')
my_new_car.update_odometer(23)
print("\n---------my new car---------")
my_new_car.raed_oaometer()
class Battery():
def __init__(self,battery_size=70):
self.battery_size = battery_size
def describle_battery(self):
print("this car has " + str(self.battery_size) + "kwh battery.")
def get_range(self):
if self.battery_size == 70:
range = 240
elif self.battery_size == 85:
range = 270
msg = 'This car can go approximately ' + str(range)
msg += 'miles on a full charge'
print(msg)
#继承
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery = Battery() # 左边:ElectricCar的属性battery,self.battery
# 右边:创建一个Battery()实例,默认battery_70的电池
# 相当于把一个实例赋给(储存在)self.battery中
my_tesla = ElectricCar ('tesla','model s',2016)
print("\n---------my tesla------------")
print(my_tesla.get_descriptive_name())
print("\n---------get my tesla range------------")
my_tesla.battery.get_range()
清雅

浙公网安备 33010602011771号