实例变量和类变量
class Student: # 类的定义体
classroom = '101' # 类变量
address = 'beijing'
def __init__(self, name, age):
self.name = name
self.age = age
def print_age(self):
print('%s: %s' % (self.name, self.age))
re=Student('小明','25')
print(re.name) # 实例变量name
print(re.age) # 实例变量age
print(Student.classroom) # 通过类名访问类变量
print(Student('小明','25').address) # re本身没有classroom实例变量,所以去寻找类变量,它找到了!
输出结果:
小明
25
101
beijing
实例化方法
class Student: # 类的定义体
classroom = '101' # 类变量
address = 'beijing'
def __init__(self, name, age):
self.name = name
self.age = age
def print_age(self):
print('%s: %s' % (self.name, self.age))
re=Student('小明','25').print_age()
输出结果:
小明: 25
静态方法
静态方法由类调用,无默认参数。将实例方法参数中的self去掉,然后在方法定义上方加上@staticmethod,就成为静态方法。它属于类,和实例无关。建议只使用类名.静态方法的调用方式。(虽然也可以使用实例名.静态方法的方式调用)
class Student(object):
@staticmethod
def print_age(name,age):
print('%s: %s' % (name, age))
re=Student.print_age('小明','25')
输出结果:
小明: 25
类方法
类方法由类调用,采用@classmethod装饰,至少传入一个cls(代指类本身,类似self)参数。执行类方法时,自动将调用该方法的类赋值给cls。建议只使用类名.类方法的调用方式。(虽然也可以使用实例名.类方法的方式调用)
class Student(object):
@classmethod
def print_age(cls,name,age):
cls.name=name
cls.age=age
print('%s: %s' % (cls.name, cls.age))
re=Student.print_age('小明','25')
输出结果:
小明: 25