Python 类成员

本文介绍了Python类的不同成员类型,包括类变量、实例方法、类方法、静态方法以及属性方法。类变量是所有类实例共享的,@classmethod和@staticmethod用于定义类方法和静态方法。还讨论了属性方法的使用,如通过@property进行读取和设置属性,并提到了一些特殊方法的作用,如__init__、__new__、__enter__和__exit__等。
摘要由CSDN通过智能技术生成

类成员

  • 类变量(有些人称之为静态属性)

    所有的当前这个类的对象,共享这个变量.

    class kind:
        variable = parameter	# 类变量
        def __init__(self):
            pass
    
  • 方法(实例方法)

    类中正常的使用的方法.

  • 类方法

    该方法第一个参数是(cls)

    在方法上写出 @classmethod,这个方法就是一个类方法.

    @classmethod # 使用场景大多数,创建对象-并初始化.

    类方法一般不用对象来调用,一般用类来调用.

    class Demo:
       	
        def __init__(self, number):
            self.number = number
        
        def delete(self):
        	return f"已删除:{self.number}"
        
        @classmethod	# 类方法
        def default(cls):
            result = cls(1)
            return result
    
    
    finish = Demo.default() # 使用类进行调用
    print(finish.delete())
    
  • 静态方法

在方法上面添加 @staticmethod.

本质上是声明在类中的函数.

参数上和正常函数一样,无需 cls self.

使用场景:创建和初始化一个对象

class calculate:
    
    @staticmethod
    def count(x, y):	# 类中的函数
        return x + y
    
 
print(calcuate.count(0, 1))
  • 属性方法

使用:在方法上添加 @property. (此时该方法转变为属性方法)

使用场景:某一个属性,必须经过计算才能得到,我们需要把方法修改为一个属性.

注意:此时的方法名应该改为属性名.

class count:
    
    def __init__(self, year):
        self.year = year
    
    @property	# 取值
    def age(self):	# 参数只需要self. (属性名)
        return 2023 - self.year
  	
    @age.setter	# 向某个属性,设置值
	def age(self, number):
       	self.year = 2023 - number

result = count(2005)
print(result.age)	# 对象.属性名
result.age = 23
print(result.year)
  • 特殊方法

python在每一个类中都内置了一大堆的方法,这些方法在特殊场景下被自动调用.

大多数的特殊方法和python的内置函数相关.

__len__() => len()
__iter__() => iter()

与计算相关
__add__() => 对象 + x

和属性相关
__getitem__() => 对象["x"]
__setitem__() => 对象["x"] = 值

初始化相关
__new__() => 创建对象时分配内存
__init__() => 初始化对象时自动调用

和上下文with相关
__enter__()	进入with的时候
__exit__()	离开with的时候
class demo:

    def __abs__(self):
        return print("绝对值")

    def __len__(self):
        return print("长度")

    def __add__(self, other):
        return print("添加" + other)

    def __iter__(self):
        return print("迭代器")

    def __getitem__(self, item):
        return print("创建字典")

    def __setitem__(self, key, value):
        return print("更改字典")

    def __del__(self):  # 程序执行完成会自动执行一次.
        return print("完成删除")

    def __enter__(self):
        return print("进入with")

    def __exit__(self, exc_type, exc_val, exc_tb):
        return print("退出with")

    # 创建对象的过程:__new__() => __init__()
    def __new__(cls, *args, **kwargs):  # 创建对象的地方.
        print("创建对象")
        return object.__new__(cls)  # 分配内存,构建出一个对象.

    def __init__(self):
        print("init")


result = demo()
result.__abs__()
result.__len__()
result.__add__("成功")
result.__iter__()
result.__getitem__("one")
result["one"] = 1
# del result
with result as x:
    pass
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值