class Teacher:
dic = {"查看学生信息": '', '查看讲师信息': ''}
def show_student(self):
print('show_student')
def show_teacher(self):
print('show_teacher')
@classmethod
def func(cls):
print('dddd')
# hasattr getattr delattr
# getattr(对象名, 字符串)
# python中一切皆对象
ret = getattr(Teacher, 'dic') # 类的属性
print(ret)
ret2 = getattr(Teacher, 'func') # 类的方法
ret2()
# 如果有才执行
if hasattr(Teacher, 'dic2'):
getattr(Teacher, 'dic2')
test = Teacher()
ret3 = getattr(test, 'show_student')
ret3()
# 对象名 获取对象属性和 普通方法
# 类名 获取静态属性 和类方法 和静态方法
# property
# 内置装饰器函数 只在面向对象中使用
# 将方法伪装成一个属性
from math import pi
class Circle:
def __init__(self, r):
self.r = r
@property
def perimeter(self):
return 2*pi*self.r
@property
def area(self):
return self.r**2*pi
c1 = Circle(5)
print(c1.area) # 圆的面积
class Person:
def __init__(self, name):
self.__name = name
@property
def name(self):
return self.__name
# 修改属性, 方法名要相同
@name.setter
def name(self, new_name):
self.__name = new_name
a = Person('aaa')
print(a.name)
a.name = 'bbbbb'
print(a.name)
getattr()的作用是获取实例的属性值(__init__
下的属性,类属性,使用@property装饰的方法)
setattr()的作用就是修改实例的属性值(不包含装饰的方法),若属性不存在,就是创建新属性。
评论列表
已有0条评论