类的常用特征

讲解见代码:

1、__call__()方法、__repr__()方法、静态方法、类方法、属性方法。

 

#!/usr/bin/env python2
# -*- coding:utf-8 -*-
__author__ = 'DSOWASP'


class B(object):
    def __init__(self):
        pass


class A(object):
    def __init__(self):
        self.name = "ds"
    age = 18

    # 实例()时调用
    def __call__(self, *args, **kwargs):
        print("call")
        return B()

    # print(实例)时调用
    def __repr__(self):
        return "__repr__"

    # 类方法,只能访问类变量,不能访问实例变量
    @classmethod
    def talk(cls):
        print(cls.age)    # 不能访问self.name

    # 静态方法不访问实例变量和类变量,实例.静态方法()时,不会自动传入的id。一个方法不要访问了类和实例变量,但类
    # 又要用这个方法时可以定义为静态方法。
    @staticmethod
    def walk(cmd):
        print("the cmd is :%s"% cmd)      # 不访问self.name和A.age,

    # 将方法转为属性,方法他时,不带括号。实例.方法。只有输出,但不接收输入时可以使用。
    @property
    def shout(self):
        print("shout:%s"%self.name)
        return 18

    # 这个property.setter装饰的方法必须是被property装饰过的方法。
    # 否则报错:TypeError: descriptor 'setter' requires a 'property' object but received a 'function'
    @shout.setter
    def shout(self,arg):
        print("shout:%s, %s"%(self.name,arg))
        return 18
a = A()
a.walk("uptime")
b = a.shout
a.shout = 20
print(b)

 

  

 

转载于:https://www.cnblogs.com/owasp/p/5644866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值