# 一个典型的类的定义
class Student:def __init__(self, name, score): # 构造方法第一个参数必须为 selfself.name = name # 实例属性self.score = scoredef say_score(self): # 实例方法print(self.name, '的分数是:', self.score)s1 = Student('张三', 80) # s1 是实例对象,先调用__new__()方法创建对象然后调用__init__()方法初始化
s1.say_score()# 其他方法
print(dir(s1)) # 获得对象的所有方法和属性
print(s1.__dict__) # 对象的属性字典
print(isinstance(s1, Student))
class man:pass# 类属性 属于类对象
# 类方法 使用测试 子类继承父类方法时,传入 cls 是子类对象,而非父类对象
class Student:company = "SXT" # 类属性@classmethod # 第一个 cls 必须有;cls 指的就是“类对象”本身;def printCompany(cls):print(cls.company)Student.printCompany() # 调用类方法格式:“类名.类方法名(参数列表)”。参数列表中,不需要也不能给 cls 传值。# __call__方法和可调用对象
# 可以像调用函数一样调用对象的__call__方法# 静态方法使用测试
class Student:company = "SXT" # 类属性@staticmethoddef add(a, b): # 静态方法print("{0}+{1}={2}".format(a, b, (a + b)))return a + bStudent.add(20, 30) # 调用静态方法格式:“类名.静态方法名(参数列表)”# 私有属性和私有方法(实现封装)
# 1. 通常我们约定,两个下划线开头的属性是私有的(private)。其他为公共的(public)。# @property 装饰器