持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
python对象中的类成员
类的成员主要包括:
- 字段
- 方法
- 属性
字段:
字段包括:普通字段和静态字段,使用和定义都是不一样,其最本质的区别就是内存中保存的位置不同。
普通字段属于对象 静态字段属于类
class Person():
type = 'ren' #静态字段
def __init__(self):
#普通字段
self.name = 'mingzi'
pass
def set_name(self, name):
self.name = name
p = Person()
p.type = 'woman'
p.name = 'man'
print(Person.type)
print(p.name)
在以上示例代码中:
- type是静态字段,可通过类名之间调用
- name是普通字段,需要通过实例对象调用
- 通常情况下我们都使用普通字段,当一个变量在类的所有对象中共同使用,而且数据共享的时候,我们就可以使用静态字段。
方法
- 方法包括:普通方法、静态方法和类方法。
普通方法:由对象调用;包含一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self; 类方法:由类调用; 包含一个cls参数;执行类方法时,自动将调用该方法的类复制给cls;使用@classmethod装饰器 静态方法:由类调用;没有默认参数;使用@staticmethod装饰器
代码示例:
class Human:
count = 0
def __init__(self, name, age):
self.name = name
self.age = age
#普通方法
def setName(name):
self.name=name
@classmethod
def add_count(cls):
cls.count += 1 # 可以通过类名修改类属性
@classmethod
def get(cls):
return cls.count
@staticmethod
def static_func(): # 静态方法
print("普通函数")
- 普通方法中可以直接使用对象的普通字段
- 类方法中可以直接使用静态字段
- 静态方法中不能直接使用普通字段和静态字段
属性
python中的属性就是普通方法的变种,就是将一个方法伪装成一个属性;
- 属性定义的两种方式:
装饰器:在方法上应用装饰器 静态字段:在类中定义值为property对象的静态字段
参考示例代码:
class A:
@property
def func(self):
print("is A func")
def get_AAA(self):
print('get的时候运行我啊')
def set_AAA(self,value):
print('set的时候运行我啊')
def delete_AAA(self):
print('delete的时候运行我啊')
AAA = property(get_AAA,set_AAA,delete_AAA) #内置property三个参数与get,set,delete一一对应