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

一、属性划分

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值