python学习(三)

类和实例

在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类如下:

class Person(object):
    pass

按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。
创建实例使用 类名+(),类似函数调用的形式创建:

xiaoming = Person()

初始化init

class Person(object):
    def __init__(self, name, gender, birth,**kw):
        self.name = name
        self.gender = gender
        self.birth = birth
        for k, v in kw.iteritems():
            setattr(self,k,v)
        #或者
        #self.__dict__.update(kw)

xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')

print xiaoming.__dict__
print xiaoming.job

{'gender': 'Male', 'job': 'Student', 'name': 'Xiao Ming', 'birth': '1990-1-1'}
Student

访问限制

Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__)

类属性

class Person(object):
    address = 'Earth'
    def __init__(self, name):
        self.name = name
因为类属性是直接绑定在类上的,所以,访问类属性不需要创建实例,就可以直接访问:

print Person.address

类方法和实例方法

在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身。
通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。

class Person(object):

    __count = 0

    @classmethod
    def how_many(cls):
        return cls.__count
    def __init__(self, name):
        self.name = name
        Person.__count = Person.__count + 1

print Person.how_many()

p1 = Person('Bob')

print Person.how_many()


0
1

你可能感兴趣的:(python学习(三))