欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python学习笔记——5. 类

程序员文章站 2024-03-22 17:55:28
...
# 定义一个继承object的类
class Human(object):

    # 类属性,被所有此类的实例共用。
    species = "H. sapiens"

    # 构造方法,当实例被初始化时被调用。注意名字前后的双下划线,这是表明这个属性或方法对Python有特殊意义,但是允许用户自行定义。
    # 你自己取名时不应该用这种格式。
    def __init__(self, name):
        # 将参数分配给该实例对象的name属性
        self.name = name

    # 实例方法,第一个参数总是self,就是这个实例对象
    def say(self, msg):
        return "{name}: {message}".format(name=self.name, message=msg)

    # 类方法,被所有此类的实例共用。第一个参数是这个类对象。
    @classmethod
    def get_species(cls):
        return cls.species

    # 静态方法。调用时没有实例或类的绑定。
    @staticmethod
    def grunt():
        return "*grunt*"


# 构造一个实例
i = Human(name="Ian")
print(i.say("hi"))     # 印出 "Ian: hi"

j = Human("Joel")
print(j.say("hello"))  # 印出 "Joel: hello"

# 调用一个类方法
i.get_species()   # => "H. sapiens"

# 改一个共用的类属性
Human.species = "H. neanderthalensis"
i.get_species()   # => "H. neanderthalensis"
j.get_species()   # => "H. neanderthalensis"

# 调用静态方法
Human.grunt()   # => "*grunt*"
#写一个支持迭代的类
class Iterable:
    def _inti_(self, x):
        self.x = x
    def __iter__(self):
        return self
    def _next_(self):
        self.x + 1
        return self.x
#Iterable既是一个可迭代对象(因为它实现了__iter__方法),又是一个迭代器(因为实现了__next__方法)。
# 实例变量x用户维护迭代器内部的状态。
# 每次调用next()方法的时候做两件事:为下一次调用next()方法修改状态, 为当前这次调用生成返回结果