python类和实例化

实例变量和类变量

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
原文地址:https://www.cnblogs.com/hghua/p/13397483.html