一、初始化
- 初始化函数:每一个实例
- def __init__(self):
- 1:他跟普通函数一样,有关键字self
- 2: 他可以带位置参数,默认参数
- 3: 他没有返回值
- 4:他的作用:每一个实例创建的时候,都会自动带上一个init函数里的参数
- 5:提高复用性(不要写死,可定制)
class User: def __init__(self, name, content): # 创建实例的时候,定义初始化的一些属性值 self.name = name self.content = content def describe_user(self): print("该用户的名字为:", self.name) def greet_user(self): # 个性化问候 print(self.content, self.name) user_01 = User('natu','我好喜欢你啊') user_01.greet_user()
- 注意:当这个类必须具备某些属性,就放到初始化__init__(self)中去
二、继承
-
继承: 全部继承 部分继承 多继承 超继承import from...import 类与模块
- 全继承:用的比较少
class User: def __init__(self, name, content): # 创建实例的时候,定义初始化的一些属性值 self.name = name self.content = content def describe_user(self): print("该用户的名字为:", self.name) def greet_user(self): # 个性化问候 print(self.content, self.name) # 这就是我们的测试程序的入口 if __name__ == '__main__': #python 程序的入口 user_01 = User('natu', '我好喜欢你啊') user_01.greet_user() 控制台输出: 我好喜欢你啊 natu
#全部继承 # 导入类 #import untitled.class_day08.tast_01 #第一种导入:直接导入模块(如果该模块中没有程序入口函数则会运行当前模块) from untitled.class_day08.tast_01 import User # 具体到类名 class SuperUser(User): # 完全继承 全部继承 pass qq = SuperUser('那年那兔那些事儿', '老子就是喜欢你:') qq.greet_user() 控制台输出: 老子就是喜欢你: 那年那兔那
super是关键字:根据传进来的类,找到父类,再去调用父类里面的方法
下面是我创建的一个类:
class Restaurant: def __init__(self, restaurant_name, cooking_type): self.restaurant_name = restaurant_name self.cooking_type = cooking_type def describe_restaurant(self): print(self.restaurant_name + "的营业范围是:" + self.cooking_type) def open_restaurant(self): print(self.restaurant_name + "该餐馆正在营业中")
# 继承Restaurant from day.class_day07.test_01 import Restaurant class SubRestaurant(Restaurant): def __init__(self, restaurant_name, cooking_type, discounts, pay_moneys): super(SubRestaurant, self).__init__(restaurant_name, cooking_type) self.discounts = discounts self.pay_moneys = pay_moneys def discount(self): print(self.restaurant_name + "的折扣为:" + self.discounts) def pay_money(self): print("最终支付价格为:%s" % self.pay_moneys)
# 超继承(SubRestaurant) from day.class_day07.test_02 import SubRestaurant class SuperRestaurant(SubRestaurant): def __init__(self, restaurant_name, cooking_type, discounts, pay_moneys, contents): SubRestaurant.__init__(self, restaurant_name, cooking_type, discounts, pay_moneys) self.content = contents def open_restaurant(self): print("优惠信息宣传:" + self.content) if __name__ == '__main__': restaurant_2 = SuperRestaurant("眼镜米线", '米线、米粉、酸辣粉、混沌', '9折', 126, '新店开张全面优惠呢,打9折,更多惊喜送不停') restaurant_2.describe_restaurant() restaurant_2.open_restaurant() restaurant_2.discount() restaurant_2.pay_money()