2.2Python语言的类(Class)、继承(Inheritance)、对象(Object)

object类是所有类的根类。

类成员分为成员变量(attribute)、成员方法和属性(property)。

成员变量(attribute):类变量、实例变量。

成员方法:类方法、静态方法、实例方法。

class Accout:
    """定义银行账户类"""

    interest_rate = 0.0668                  #类变量利率

    def __init__(self, owner, amount):
        self.owner = owner                  #定义实例变量账户名
        self.amount = amount                #定义实例变量账户余额

    #类方法
    @classmethod                           
    def interest_by(cls, amt):
        return cls.inerest_rate * amt

    #静态方法
    @staticmethod                           
    def interest_with(amt):
        return Accout.inerest_rate * amt

1.类定义

如果父类省略的话,表示直接继承 object 类。

class 类名 [(父类)]:
    类体

2.多继承

大部分计算机语言如Java等,只支持单继承,不支持多继承,主要是多继承会发生方法冲突,Python支持多继承,但Python给出了解决方法名字冲突的方案,当子类实例调用一个方法时,先从子类查找,如果没有找到则查找父类,父类的查找顺序是按照子类声明的父类列表从左到右查找,如果没有找到则查找父类的父类,依次查找下去。

class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    .
    <statement-N>

3.构造方法

def __init__(self,owner,amount):
    self.owner = owner
    self.amount = amount

self是对当前实例的引用,定义构造方法的第一个参数应该是self,其后的参数才是用来初始化实例变量的。之所以第一个参数是self,目的是将当前实例与该方法绑定,使该方法成为构造方法或实例方法。

4.创建对象

变量 = 类名()
实例.实例变量
实例.实例方法
类.类变量
类.类方法

5.属性(property)

属性的发明是为了解决setter和getter代码麻烦的问题。在方法前面加上@property装饰符,会把方法名会变成属性名。先定义getter访问器,再定义setter访问器。

class Animal(object):
    def __init__(self, age, sex=1, weight=0.0):
        self.age = age
        self.sex = sex
        self.__weight = weight

    @property
    def weight(self):                      #替代get_weight(self):
        return self.__weight   
    
    @weight.setter                         
    def weight(self, weight):              #替代set_weight(self, weight):
        self.__weight = weight
    
a1 = Animal(2, 0, 10.0)
print('a1体重:{0:0.2f}'.format(a1.weight))
a1.weight = 123.45    #a1.set_weight(123.45)
print('a1体重:{0:0.2f}'.format(a1.weight))

6.私有变量和私有方法

在变量和方法前面加上双下划线,就将变量和方法的访问权限变为了私有。

__变量
__方法

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/python/pythonlang/2719.html

(0)
上一篇 2021年3月1日 22:53
下一篇 2021年3月2日 01:00

相关推荐

  • 1.6Python语言的变量(Variable)和常量(Constant)

    全局变量 在模块内,在类外创建,其作用域为整个模块,称为全局变量。 类变量 在类中定义的变量,其作用域为整个类,称为类变量。 实例变量 在类中定义的self.变量,其作用域为实例,称为实例变量。 局部变量 在函数中创建,其作用域为整个函数,称为局部变量。 常量 Python中没有从语言层面定义常量,只能把变量当常量使用…

    Python语言教程 2020年12月6日
    01.5K0
  • 1.8Python语言的语句(Statement)

    del 语句 del 语句按索引,而不是值从列表中移除元素。与返回值的 pop() 方法不同, del 语句也可以从列表中移除切片,或清空整个列表(之前是将空列表赋值给切片)。 例如: del 也可以用来删除整个变量: 此后,再引用 a 就会报错(直到为它赋与另一个值)。

    Python语言教程 2020年12月8日
    01710
  • 2.5Python语言的装饰器(Decorator)

    返回值为另一个函数的函数,通常使用 @wrapper 语法形式来进行函数变换。 装饰器的常见例子包括 classmethod() 和 staticmethod()。 装饰器语法只是一种语法糖,以下两个函数定义在语义上完全等价:

    Python语言教程 2021年3月5日
    02880

发表评论

登录后才能评论