一、属性划分
1.类属性
类属性:类属性就是类对象具有的属性,一般写法在类内部、方法的外部定义的变量,就是类属性,类属性在内存中只有一份。可以通过类名直接访问,也可通过实例访问。
class Circle:
# 类属性,定义圆周率
pi = 3.14159
def __init__(self, radius):
self.radius = radius
def calculate_area(self):
# 使用类属性计算圆的面积
return Circle.pi * self.radius * self.radius
def 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 定义的属性,每个实例对象中都存在一份自己的属性信息。
class Person:
def __init__(self, name, age):
self.name = name # 实例属性 name
self.age = age # 实例属性 age
def introduce(self):
return f"我是{self.name},今年{self.age}岁。"
# 创建两个 Person 类的实例
person1 = Person("小明", 20)
person2 = Person("小红", 22)
print(person1.introduce())
print(person2.introduce())
如何判断一个属性是定义实例属性还是类属性?
基本上所有的属性都实例属性,实例属性描述每个实例对象的特有信息,类属性描述的是整个类共有信息。
二、方法的划分
1.实例方法
直接使用def关键字定义的方法就是实例对象方法(实例方法),调用:实例对象.方法名()
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
# 实例方法,打印狗狗的叫声和名字
print(f"{self.name}:汪汪!")
# 创建一个 Dog 类的实例
my_dog = Dog("小白")
# 调用实例方法
my_dog.bark()
2.类方法
类方法:在 def 的上方使用装饰器 @classmethod 装饰的方法,调用:类名.方法名()、对象.方法名()
class Circle:
pi = 3.14159
def __init__(self, radius):
self.radius = radius
@classmethod
def 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 装饰的方法,静态方法,它不依赖于类的实例,也不访问类属性或实例属性。它只是一个与类相关的工具方法,可以直接通过类名来调用。
class MathUtils:
@staticmethod
def add(a, b):
# 静态方法,进行简单的加法运算
return a + b
result = MathUtils.add(5, 3)
print(result) # 输出 8
标签:三十三,Python,self,语法,实例,radius,print,def,属性
From: https://blog.csdn.net/CSXB99/article/details/143578838