类
在__init__() 方法的定义中,形参self必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self呢?因为python调用这个__init__()方法来创建实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能访问类中的属性和方法。以self为前缀的变量都可供类中的所有方法使用。
class Car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
def get_describe_name(self):
long_name = str(self.year) + " " + self.make + " " + self.model
return long_name
def fill_gas_tank(self):
print("ok,It is running")
class Battery():
def __init__(self,battery_size=85):
self.battery_size = battery_size
def describe_battery(self):
print("This car has a " + str(self.battery_size) + "-kWh battery.")
def get_scope(self): # 剩余里程
if self.battery_size == 70:
scope = 240
elif self.battery_size == 85:
scope = 270
else:
scope = 0
message = "This car can go approximately " + str(scope) + " miles on a full charge."
print(message)
class ElectricCar(Car): # 继承Car类
def __init__(self,make,model,year):
super().__init__(make,model,year)
self.battery_size = 70 # 这里用两种方法来表示电瓶大小,这个是第一种
self.battery = Battery() # 这是第二种方法,将实例作为属性,这个实例是Battery类的实例,这样的话可以尽可能详细地描述电瓶,不会导致Electric类混乱不堪
def describe_battery(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_describe_name()) # 如果子类中没有该方法,就调用父类的方法
my_tesla.describe_battery()
my_tesla.fill_gas_tank()
my_tesla.battery.describe_battery()
my_tesla.battery.get_scope()
2016 tesla model s
This car has a 70-kWh battery.
This car doesn't need a gas tank!
This car has a 85-kWh battery.
This car can go approximately 270 miles on a full charge.
自己稍微补充一点,有时候定义类,可能没有__init__()函数。
class test():
def hello(self):
print("hello")
a = test()
a.hello()
hello
从模块(文件)中导入类,跟函数存储在模块(文件)中,导入函数类似,只不过没有命名为别名。
impot module_name # 导入整个模块
module_name.class_name() # 使用模块中的类
from module_name import class_0,class_1,class_2 # 导入特定的类
class_0.function() # 直接使用类即可,不用再加模块名
# 导入模块中的所有类
from module_name import *
类编码风格
类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线,实例名和模块名都采用小写格式,并在单词之间加上下划线。
每个类,都应该紧跟在类定义后面包含一个文档字符串,这个文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采用的格式约定,每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。
在类中,可使用一个空行来分隔方法;在模块中,可使用两个空行来分隔类。
同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的import语句,再添加一个空行,然后编写导入你自己编写的模块的import语句,在包含多条import语句的程序中,这种做法让人更容易明白程序使用的各个模块都来自何方。
以上内容为作者总结自参考书籍《python编程入门到实践》,希望对你有所帮助。