python学习(5)面向对象编程

1.定义类与创建实例

class关键字定义类,类名后 跟括号,括号中是继承的类的类名,没有继承的也要从object类继承。

class Person(object):

Pass

创建类的实例用: 类名+()。

xiaoming = Person()

xiaohong = Person()

Python是动态语言,实例的属性也是可以直接就加的,像下面这样:

xiaoming = Person()

xiaoming.name = 'Xiao Ming'

2.初始化

定义类时可以用__init__()方法进行初始化,该方法的第一个参数必须是self(习惯上这样),后面可以自由添加参数。

class Person(object):

    def __init__(self, name, gender, birth):

        self.name = name

        self.gender = gender

        self.birth = birth

3.访问限制

双下划线开头(__)的属性无法被外部访问。

"__xxx__"的形式定义的为特殊属性,可以被外部访问。

4.类属性

绑定在类上的属性为类属性,类属性有且只有一份。

class Person(object):

address = 'Earth'

访问时不需要创建实例:

print Person.address

当实例属性与类属性同名时,实例属性的优先级高,类属性被屏蔽。

5.实例方法

实例方法就是在类中定义的函数,其第一个参数永远都是self,指向调用该方法的实例本身。调用时self不需要手动传入。

class Person(object):

    def __init__(self, name):

        self.__name = name

    def get_name(self):

        return self.__name

p1 = Person('Bob')

print p1.get_name() 

python中方法也是属性,可以动态的添加到实例上,须用到types.MethodType()方法。

import types
def pri(self):
    print self
class D(object):
    pass
d = D()
d.pri = types.MethodType(pri, d, D)
d.pri()

6.类方法

通过在方法定义前标记一个@classmethod,把该方法将绑定到类上。类方法第一个参数传入类本身,不能使用任何实例属性。

class Person:

@classmethod #类方法

    def classMethod(cls):

        print("class method") 

p = Person("Sam")

p.classMethod()

Person.classMethod()

输出:

class method

class method

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值