python如何将实例用作属性

1、说明

由于模拟实物中会有越来越多的细节,导致一种类变得有些复杂,此时我们可以从中提取细节,将其作为一种类型,并将其作为子类型的属性。

将子类中的电池给单独分离出来,形成一个新的类。

2、实例

classCar:
---snip---
#创建子类时,父类文件必须包含在该文件中,且圆括号内必须包含父类的名称
#---snip---表示上一个代码中父类的基本属性

classBattery:#先是定义了一个新类——Battery,他没有继承任何类。
"""一次模拟电动汽车电瓶的简单尝试。"""


def__init__(self,battery_size=75):#其中有一个形参battery_size,这个形参是可选的,被默认为75.但不是默认值,仍然可以进行改变的
"""初始化电瓶的属性"""
self.battery_size=battery_size


defdescribe_battery_size(self):
"""打印一条描述电瓶容量的消息"""
print(f"Thiscarhasa{self.battery_size}-kwhbattery")




defget_range(self):
"""打印一条消息,指出电瓶的续航里程"""
ifself.battery_size==75:
range=260


elifself.battery_size==100:
range=315


print(f"Thiscarcangoabout{range}milesonafullcharge")


#虽然将原来的实例电池作为属性,有点繁杂,但是整个之后可以方便我们对电池进行更详细的描述,不至于在子类中显得太繁杂


classElectric_Car(Car):
"""描述电动汽车类"""


def__init__(self,make,model,year):
"""
初始化父亲的属性
再初始化电动汽车特有的属性
"""
super().__init__(make,model,year)#super()能够让我们调用父类的方法
self.battery_size=Battery()#直接在子类的基本属性中添加基本属性了




defdescribe_battery(self):#添加新的方法
"""打印一条描述电瓶容量的消息"""
print(f"Thiscarhasa{self.battery_size.battery_size}-kwhbattery.")#当battery没有变成类的时候,battery相当于一个一个简单
#的属性并且已经是个默认值了。但是将battery变成类时,battery_size=Battery然后需要去该类中寻找描述电池的方法,所以格式为,实例名.属性.类方法




deffill_gas_tank(self):
"""电瓶车没有汽油"""
print(f"Thiscardoesn'tneedagastank")


my_tesla=Electric_Car('tesla','models',2019)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()


my_tesla.fill_gas_tank()


my_tesla.battery_size.describe_battery_size()
my_tesla.battery_size.get_range()

以上就是python将实例用作属性的方法,希望对大家有所帮助。更多Python学习指路:Python基础教程

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。