三十三、Python基础语法(面向对象其他语法-下)

embedded/2024/11/13 16:17:48/

一、属性划分

1.类属性

类属性:类属性就是类对象具有的属性,一般写法在类内部、方法的外部定义的变量,就是类属性,类属性在内存中只有一份。可以通过类名直接访问,也可通过实例访问。

python">class Circle:# 类属性,定义圆周率pi = 3.14159def __init__(self, radius):self.radius = radiusdef calculate_area(self):# 使用类属性计算圆的面积return Circle.pi * self.radius * self.radiusdef calculate_circumference(self):# 使用类属性计算圆的周长return 2 * Circle.pi * self.radius# 创建两个圆对象
circle1 = Circle(5)
circle2 = Circle(8)print(f"圆 1 的面积:{circle1.calculate_area()}")
print(f"圆 2 的面积:{circle2.calculate_area()}")print(f"圆 1 的周长:{circle1.calculate_circumference()}")
print(f"圆 2 的周长:{circle2.calculate_circumference()}")

2.实例属性

实例属性:实例属性就是对象具有的属性,在类中 的 init 方法中, 使用 self 定义的属性,每个实例对象中都存在一份自己的属性信息。

python">class Person:def __init__(self, name, age):self.name = name  # 实例属性 nameself.age = age    # 实例属性 agedef introduce(self):return f"我是{self.name},今年{self.age}岁。"# 创建两个 Person 类的实例
person1 = Person("小明", 20)
person2 = Person("小红", 22)print(person1.introduce())
print(person2.introduce())

如何判断一个属性是定义实例属性还是类属性?

基本上所有的属性都实例属性,实例属性描述每个实例对象的特有信息,类属性描述的是整个类共有信息。

二、方法的划分

1.实例方法

直接使用def关键字定义的方法就是实例对象方法(实例方法),调用:实例对象.方法名()

python">class Dog:def __init__(self, name):self.name = namedef bark(self):# 实例方法,打印狗狗的叫声和名字print(f"{self.name}:汪汪!")# 创建一个 Dog 类的实例
my_dog = Dog("小白")# 调用实例方法
my_dog.bark()

2.类方法

类方法:在 def 的上方使用装饰器 @classmethod 装饰的方法,调用:类名.方法名()、对象.方法名()

python">class Circle:pi = 3.14159def __init__(self, radius):self.radius = radius@classmethoddef from_diameter(cls, diameter):# 类方法,通过直径创建 Circle 实例return cls(diameter / 2)def area(self):return Circle.pi * self.radius * self.radius# 使用类方法创建实例
circle1 = Circle.from_diameter(10)
print(circle1.radius)print(circle1.area())

3.静态方法

静态方法:在 def 的上方,使用装饰器 @staticmethod 装饰的方法,静态方法,它不依赖于类的实例,也不访问类属性或实例属性。它只是一个与类相关的工具方法,可以直接通过类名来调用。

python">class MathUtils:@staticmethoddef add(a, b):# 静态方法,进行简单的加法运算return a + bresult = MathUtils.add(5, 3)
print(result)  # 输出 8

http://www.ppmy.cn/embedded/136670.html

相关文章

数据科学与大数据技术专业学生的考研方向与适合专业探索

一、引言 数据科学与大数据技术的重要性考研对这一专业学生的意义 二、数据科学与大数据技术专业概述 专业的定义和课程设置当前领域的市场需求与前景 三、考研的必要性和价值 学术深造对职业发展的影响与直接就业的优缺点比较 四、考研前的准备工作 自我评估与目标设定…

《Rust语言圣经》Rust教程笔记17:2.Rust基础入门(2.6模式匹配)2.6.2解构Rust Option<T>

文章目录 2. Rust 基础入门2.6. 模式匹配2.6.2. 解构Option注意不要忘记Some 和 None 是 Option 枚举的成员匹配 Option<T>1、传入参数 Some(5)2、传入参数 None 2. Rust 基础入门 2.6. 模式匹配 2.6.2. 解构Option 在枚举那章&#xff0c;提到过 Option 枚举&#xf…

【bayes-Transformer-GRU多维时序预测】多变量输入模型。matlab代码,2023b及其以上

% 1. 数据准备 X_train 训练数据输入; Y_train 训练数据输出; X_test 测试数据输入; % 2. 模型构建 inputSize size(X_train, 2); numHiddenUnits 100; numResponses 1; layers [ … sequenceInputLayer(inputSize) biLSTMLayer(numHiddenUnits, ‘OutputMode’, ‘se…

【电控笔记 】电机模型笔记

同步旋转轴模型&#xff1a; 静止旋转轴 欧拉&#xff1a; ye&#xff1a; 以上两式等价

WPF中的INotifyPropertyChanged接口

INotifyPropertyChanged 是一个在 WPF (Windows Presentation Foundation) 和 .NET 中使用的接口&#xff0c;它用于实现数据绑定时的数据更新通知。当实现了 INotifyPropertyChanged 接口的类的属性值发生变化时&#xff0c;这个接口允许对象通知绑定到该对象属性的 UI 元素&a…

连接kafka消息队列报org.apache.kafka.clients.NetworkClient异常

启动kafka后&#xff0c;连接kafka消息队列报org.apache.kafka.clients.NetworkClient异常 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient) 检查kafka运行日志&#xff0c;报The broker is trying to join the wrong clu…

2024 第五次周赛

A: 直接遍历即可 #include<bits/stdc.h> using namespace std;typedef long long ll; typedef pair<ll, ll>PII; const int N 2e6 10; const int MOD 998244353; const int INF 0X3F3F3F3F;int n, m; int main() {cin >> n;int cnt 0;for(int i 0; i …

24-11-9-读书笔记(三十二)-《契诃夫文集》(六)上([俄] 契诃夫 [译] 汝龙)药品是甜的,真理是美的,咖啡是苦的,生活是什么啊?

文章目录 《契诃夫文集》&#xff08;六&#xff09;上&#xff08;[俄] 契诃夫 [译] 汝龙&#xff09;药品是甜的&#xff0c;真理是美的&#xff0c;咖啡是苦的&#xff0c;生活是什么啊&#xff1f;目录阅读笔记1. 新年的苦难2. 香槟3. 乞丐4. 仇敌5.薇罗琪卡6.在家里7. 太早…