美文网首页
python学习(三)

python学习(三)

作者: 小慕先森 | 来源:发表于2018-01-22 17:03 被阅读0次

    类和实例

    在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学习(三)

          本文链接:https://www.haomeiwen.com/subject/iuolaxtx.html