python的类和对象

在python中定义私有的变量/函数只需要在变量名或函数名前面加上"__"(即两个下划线),那么这个函数或变量就会变成私有的了。

一、字段:

普通字段属于对象,静态字段属于类;

class Province:
# 静态字段
    country = '中国'

    def __init__(self, name):
        # 普通字段        普通字段在每个对象中都要保存一份
        self.name = name

# 直接访问普通字段
obj = Province('河北省')
print obj.name
# 直接访问静态字段        静态字段在内存中只保存一份
Province.country

定义私有的变量只需要在变量名或函数名前面加上"__"两个下划线,那么这个函数或变量就会变成私有的了。(原理:python会将双下划线开头的名字进行改编,重新命名,改成"_类名_属性名/方法名")


二、方法:(在所有方法中self参数与cls参数都是放在第一位的,而且都是显示声明,隐示被赋值

1、Python中3种方式定义类中的方法:普通方法、 @classmethod修饰的方法、 @staticmethod修饰的方法

普通方法:需要self参数隐式的传递当前类对象的实例(self通常用作实例方法的第一参数)。

@classmethod修饰的方法:需要cls参数传递当前类对象(cls通常用作类方法的第一参数)。

@staticmethod修饰的方法:就是一个正常的方法定义(按业务需求设置参数,也可以根本没有参数)。

2、Python中特殊方法:

__init__(self, param1, param2, ...):类似于java中的构造方法,init方法不能有返回值

__new__(cls[,...]):对象实例化时调用的方法,返回一个类对象

。。。。


三、属性:(访问属性时可以制造出和访问字段完全相同的假象)

属性由方法变种而来,如果Python中没有属性,方法完全可以代替其功能。

@property装饰器,就是负责把类中方法变成可读属性来使用(再配合 @方法名.setter 就把类中方法变成可读写属性来使用)。

class Student(object):

    @property
    def score(self):
        return self._score

    @score.setter
    def score(self, value):
        if not isinstance(value, int):
            raise ValueError('score must be an integer!')
        if value < 0 or value > 100:
            raise ValueError('score must between 0 ~ 100!')
        self._score = value

结果:

>>> s = Student()
>>> s.score = 60 # OK,实际转化为s.set_score(60)
>>> s.score # OK,实际转化为s.get_score()
60

四、类的继承(python可以有多继承,一个类可以有两个以上父类):

1、类的继承(直接在类名后面括号里面写入要继承的类名),例  class DerivedClassName(BaseClassName):

2、子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值