大连零基础网站建设教学在哪里,江阴外贸网站制作,wordpress导航跟随,潍坊最新消息类定义
如何理解万物皆对象#xff1f;
生活中一些事物#xff0c;动物#xff08;可爱的小狗、调皮的小猫#xff09;、交通工具#xff08;比亚迪U8汽车、飞机#xff09;、人#xff08;学生、教师#xff09;……
这些对象都有着独特或共性的属性和方法来描述其…类定义
如何理解万物皆对象
生活中一些事物动物可爱的小狗、调皮的小猫、交通工具比亚迪U8汽车、飞机、人学生、教师……
这些对象都有着独特或共性的属性和方法来描述其特征和行为。 类定义
将上述图片可以分类动物类、交通工具类、人类……
类是一种用来创建对象的蓝图或模板,定义了对象的属性和方法并通过实例化来创建具体的对象
作用使代码更加模块化、可维护和可扩展
通过定义类则可以创建多个具有相同属性和方法的对象这些对象被称为类的实例。例如定义一个名为“Person”的类然后创建多个不同的人的实例如学生、教师、校长、主任……
定义类的语法结构
class ClassName: # 类属性 name“test” # 初始化方法 def __init__(self, parameters): # 类方法 def method_name(self, parameters):
语法解析 1关键字 class 用于定义一个类后面紧跟着类名 ClassName 。 2类 名通常使用首字母大写的驼峰命名法来命名以区别于变量和函数名 。 3在类体中可以定义类的属性和方法。 4类属性是属于类本身的属性可以被所有该类的实例共享。 5方法 是类的函数用于定义类的行为和功能 。 ( 函数在类里面称为方法 ) 类体中的 __init__() 方法是一个特殊的方法也被称为构造方法或初始化方法它在创建对象时被自动调用, self 参数代表当前对象本身用于引用对象的属性和方法。其他参数用于接受传递给初始化方法的值
类定义示例
示例定义一个人类当然也可以定义动物类、交通工具类……
class Person: def __init__(self, name, age): self.name name self.age age def say_hello(self): print(Hello, my name is, self.name) print(I am, self.age, years old.)
# 创建一个Person类的实例,李小龙是人类的一个对象还可以创建张三、李四……
person Person(“李小龙, 80)
# 访问实例的属性
print(person.name) # 输出李小龙
print(person.age) # 输出80
# 调用实例的方法
person.say_hello() # 输出Hello, my name is李小龙 # I am 80 years old.
以订单管理系统为例创建一个名为“Order”的类订单对象具有订单号、客户姓名和订单金额等属性同时具有处理支付、生成发票和发送确认邮件等方法示例如下
class Order: def __init__(self, order_id, customer_name, total_amount): self.order_id order_id self.customer_name customer_name self.total_amount total_amount def process_payment(self): print(f正在处理订单 {self.order_id} 的支付付款金额为 {self.total_amount}) # 具体的支付逻辑 def generate_invoice(self): print(f正在生成订单 {self.order_id} 的发票) # 具体的发票生成逻辑 def send_confirmation_email(self): print(f正在向客户 {self.customer_name} 发送订单 {self.order_id} 的确认邮件) # 具体的邮件发送逻辑
创建对象
创建对象也称为类的实例化。
#创建对象
my_order Order(20231006, 李四, 10000)
#调用处理订单方法
my_order.process_payment()
#生成订单方法
my_order.generate_invoice()
#发送邮件
my_order.send_confirmation_email() 类的属性值修改
修改类属性的值有以下几种方法
直接通过类名访问和修改属性 class classTest: attribute old value
classTest.attribute new value 2. 通过类的实例访问和修改属性 class classTest: def __init__(self): self.attribute old value
obj classTest()
obj.attribute new value
3. 通过类的方法访问和修改属性
class Person: def __init__(self, name, age): self.name name self.age age def introduce(self): print(fMy name is {self.name} and I am {self.age} years old.) def change_name(self, new_name): self.name new_name def change_age(self, new_age): self.age new_age
# 创建一个Person对象
person Person(李四, 18)
# 打印初始属性值
person.introduce()
# 使用类的方法修改属性值
person.change_name(“李小龙)
person.change_age(80)
# 打印修改后的属性值
person.introduce() 类的继承 类继承是面向对象编程的重要特征之一一个类可以继承另一个类的属性和方法并且可以在其基础上进行扩展和修改。
我们把继承看作成是子类继承父类如果一个子类继承了父类那么该子类就拥有了父类的属性和方法。
比如人类有2只手2只腿一双眼会说话会走路学生类继承人类那学生类的实例对象就拥有了这些属性和方法。
单继承
一个类只能继承自一个父类。在定义类时可以在类名后面使用括号指定继承的父类
class ParentClass: pass
class ChildClass(ParentClass): pass
多继承
一个类可以同时继承多个父类。在定义类时可以在括号中使用逗号分隔多个父类。
class ParentClass1: pass
class ParentClass2: pass
class ChildClass(ParentClass1, ParentClass2): pass 继承示例 类的多态
可以使用多态来重写父类的方法。它允许子类对继承自父类的方法进行重写并根据不同的子类对象执行不同的行为。
怎样实现多态
要实现多态首先需要创建一个父类定义一个或多个方法。在子类中重写这些方法以实现自定义的行为。子类可以根据需要修改方法的输入参数、输出结果或内部实现逻辑。 class Animal: def make_sound(self): pass
class Dog(Animal): def make_sound(self): print(小狗是汪汪汪)
class Cat(Animal): def make_sound(self): print(小猫是喵喵喵)
class Cow(Animal): def make_sound(self): print(老黄牛是哞哞哞)
# 创建对象并调用方法
animals [Dog(), Cat(), Cow()]
for animal in animals: animal.make_sound() 类的方法重载 可以使用多态来重写父类的方法。它允许子类对继承自父类的方法进行重写并根据不同的子类对象执行不同的行为。
怎样实现多态
要实现多态首先需要创建一个父类定义一个或多个方法。在子类中重写这些方法以实现自定义的行为。子类可以根据需要修改方法的输入参数、输出结果或内部实现逻辑。
注意python 不直接支持方法重载如果要实现重载需要借助默认参数来实现。
class Calculator: def add(self, a, bNone, cNone): if c is not None: return a b c elif b is not None: return a b else: return a
# 创建对象并调用方法
calculator Calculator()
result1 calculator.add(2)
print(result1) # 输出: 2
result2 calculator.add(2, 3)
print(result2) # 输出: 5
result3 calculator.add(2, 3, 4)
print(result3) # 输出: 9
导入单类
Order.py 文件 包含Order类
class Order: def __init__(self, order_id, customer_name, total_amount): self.order_id order_id self.customer_name customer_name self.total_amount total_amount def process_payment(self): print(f正在处理订单 {self.order_id} 的支付付款金额为 {self.total_amount}) # 具体的支付逻辑 def generate_invoice(self): print(f正在生成订单 {self.order_id} 的发票) # 具体的发票生成逻辑 def send_confirmation_email(self): print(f正在向客户 {self.customer_name} 发送订单 {self.order_id} 的确认邮件) # 具体的邮件发送逻辑 Customer.py 文件
#import语句让Python 打开模块Order并导入中其中的Order类
from Order import Order
orderOrder(T20231006002,李小龙,10000)
order.process_payment() 导入多个类
Customer.py 文件
#import语句让Python 打开模块Order并导入中其中的Order类, OnlineOrder类
from Order import Order ,OnlineOrder
orderOrder(T20231006002,李小龙,10000)
order.process_payment()
olOnlineOrder(20231006003, 李四, 10000, 广州, 2023-10-06)
ol.process_payment() 导入整个模块
Customer.py 文件
#import语句让Python 打开模块Order并导入所有模块
import Order
使用别名
#import语句让Python 打开模块Order并导入所有模块别为or
import Order as or
使用示例
cusor.OnlineOrder(20231006003, 李四, 10000, 广州, 2023-10-06)