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

推荐阅读更多精彩内容

  • pdf下载地址:Java面试宝典 第一章内容介绍 20 第二章JavaSE基础 21 一、Java面向对象 21 ...
    王震阳阅读 88,844评论 26 537
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 565评论 0 6
  • 定义类并创建实例 在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类...
    绩重KF阅读 2,206评论 0 12
  • Python进阶框架 希望大家喜欢,点赞哦首先感谢廖雪峰老师对于该课程的讲解 一、函数式编程 1.1 函数式编程简...
    Gaolex阅读 4,341评论 6 51
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 2,966评论 3 16