python3 类,Python3 类

Python3 类

目录

在Python中,首字母大写的名称值得是类,而小写的名称指的是根据类创建的实例。

Python类中的每个属性都必须有初始值。可以在__init__()方法内为某个属性设置默认初始值,此时无需包含为它提供初始值的形参。

类中的函数称为方法,Python类中的方法都必须有一个参数,该参数是实例化对象的自身引用,该参数通常命名为self,且该参数必须放在参数列表中的第一个位置。

__init__():类的构造方法,在创建类的实例化对象时,Python会自动调用该方法。Python在调用时,首先会去类的定义中看有没有重新定义的__init__()方法,如果有就用新定义;否则调用默认的__init__()方法。

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

# 此类没有重写__inti()__构造方法

class Restaurant:

"""一个简单的餐馆类"""

def description_restaurant(self):

"""对餐馆简单描述"""

print("美味的四川火锅")

# 此类重写__inti()__构造方法

class Newrestaurant:

def __init__(self, restaurant_name, cuisine_type):

"""重写构造方法:对属性赋值"""

self.restaurant_name = restaurant_name

self.cuisine_type = cuisine_type

self.number_served = 0 # 设置默认初始值

def description_newrestaurant(self):

"""打印餐馆的描述信息"""

print("欢迎来到"+self.restaurant_name)

print("我们是一家"+self.cuisine_type)

def set_number_served(self, number):

"""设置就餐人数"""

self.number_served = number

def increment__number_served(self, increment):

"""增加就餐人数"""

self.number_served = self.number_served + increment

def print_numbers(self):

"""打印餐馆目前就餐人数"""

print("现在共有"+str(self.number_served)+"人就餐,请耐心排队等候")

my_restaurant = Restaurant() # 实例化一个对象

my_restaurant.description_restaurant()

new_restaurant = Newrestaurant("我爱南洋菜", "东南亚菜系")

new_restaurant.description_newrestaurant()

new_restaurant.print_numbers() # 打印默认初始值就餐人数

new_restaurant.number_served = 120 # 直接修改属性的值

new_restaurant.print_numbers() # 打印修改后的就餐人数

new_restaurant.set_number_served(46) # 通过方法修改属性的值

new_restaurant.print_numbers() # 打印修改后的就餐人数

new_restaurant.increment__number_served(4) # 通过方法递增修改属性的值

new_restaurant.print_numbers() # 打印修改后的就餐人数

继承

当一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类。子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法。

创建子类时,父类必须包含在当前文档中,且必须位于子类前面。必须在括号中指定继承的父类名称

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

# 父类

class Restaurant:

"""一家简单的餐馆"""

def __init__(self, restaurant_name, cuisine_type):

"""重写构造方法:对属性赋值"""

self.restaurant_name = restaurant_name

self.cuisine_type = cuisine_type

def description_restaurant(self):

"""打印餐馆的描述信息"""

print("欢迎来到"+self.restaurant_name)

print("我们是一家"+self.cuisine_type+"店")

# 子类IceCreamStand继承Restaurant类

class IceCreamStand(Restaurant):

"""一家冰激凌小店"""

pass # 子类只继承父类的所有属性和方法,没有重写父类的方法或定义自己的属性和方法

# 子类NewIceCreamStand继承Restaurant类

class NewIceCreamStand(Restaurant):

"""一家冰激凌小店"""

def __init__(self, restaurant_name, cuisine_type, flavors): # 重写父类的构造方法,并新增子类特有属性flavors

"""

先使用super()函数调用父类的构造方法,初始化父类的属性;再初始化子类的特有属性

"""

super().__init__(restaurant_name, cuisine_type)

self.flavors = flavors

def description_restaurant(self): # 重写父类的description_restaurant方法

"""打印餐馆的描述信息"""

print("欢迎大家来到"+self.restaurant_name)

print("我们是一家"+self.cuisine_type+"店")

def description_icecream(self): # 定义子类特有的方法

"""打印冰激凌的口味"""

n = 1

print("本店销售各种口味的冰激凌:")

for ice in self.flavors:

print(str(n)+"、"+ice+"口味")

n = n + 1

my_icecreamstand = IceCreamStand("夏天的味道", "冰激凌")

my_icecreamstand.description_restaurant()

flavors = ["香草味", "巧克力味", "草莓味", "芒果味", "抹茶芝士味"]

new_icecreamstand = NewIceCreamStand("新夏天的味道", "冰激凌", flavors)

new_icecreamstand.description_restaurant()

new_icecreamstand.description_icecream()

项目组织方式

一开始应让代码结构尽可能简单。先尽可能在一个文件中完成所有工作,确定一切都能正确运行后,再将类移到独立的模块中。如果你喜欢模块和文件的交互方式,可在项目开始时就尝试将类存储到模块中。先找出能够让你编写出可行代码的方式,再尝试让代码更为组织有序。

类编码风格

类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线。

实例名和模块名都采用小写格式,并在单词之间加上下划线。

对于每个类,都应紧跟在类定义之后包含一个文档字符串,该文档字符串应简要描述类的功能。

每个模块也都应包含一个文档字符串,对其中的类可以用于做什么进行描述。

需要同时导入标准库中的模块和你自己编写的模块时,先编写导入Python标准库模块的import语句,再添加一个空行,然后编写导入你自己编写的模块的import语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值