Python 类代码编写基础

构造函数

写过 c++/ java oop 编程语言的都知道,类编写离不开的就是构造函数

直接上代码

# 有别于其他语言 Object 在 Python 中是 object
class abc(object):
    # 同时 Python 中的 __init__ 构造函数不能有多个,即 Python 函数不能被重载,永远只能存在一个

    def __init__(self):  # 无参构造方法
        print(0)

    # 如果出现一个 __init__ 函数的参数数量是所有 __init__ 参数数量中最多的时候,该 __init__ 覆盖其他所有

    def __init__(self, value):  # 带一个参数的构造方法,会将第一种方法覆盖
        print(value)

    # 解决方法也很简单,使用带默认值的参数
    def __init__(self, a=1):  # 如需带参数且需要保留无参构造,只能使用最后一种
        print(a)

if __name__ == '__main__':
    abc()
    abc(10)


# 输出结果为
1
10

类继承及私有属性与方法

# 类是模块中的属性
class Abc:
    def __init__(self):
        self.__a = 1  # 私有属性

    def __abc(self):  # 私有方法
        print(self.__a)

    @staticmethod
    def abc():
        print('abc')


class Bcd:
    @staticmethod
    def bcd():
        print('bcd')


# java 中是不存在多继承的,c++ 有多继承
class Cde(Abc, Bcd):
    @staticmethod
    def cde():
        print('cde')

    # 重写父类的方法
    @staticmethod
    def bcd():
        print('cde bcd')


if __name__ == '__main__':
    a = Cde()
    a.abc()
    a.bcd()
    a.cde()

# 输出结果
abc
cde bcd
cde

运算符重载

# 重载运算符

class Abc():
    def __init__(self, a):
        self.a = a

    def __add__(self, b):  # 重载运算符加号,使他模拟字符串拼接,并返回 int 型的数
        return int(str(self.a) + str(b.a))

    def __and__(self, b):
        return 1

    def __sub__(self, b):
        return False


if __name__ == '__main__':
    print(Abc(1) + Abc(2))
    print(Abc(1) - Abc(2))

# 输出结果
12
False

@property 及 __str__

class Rec:
    def __init__(self):
        self.abc = 1
        self.name = 'sdhjf'

    @property  # 将该类方法转换成只读属性,同时具备了 getter
    def SetAndGetName(self):
        return self.name

    @SetAndGetName.setter  # 重新实现 setter,该属性又通过这个修改器变为可写属性
    def SetAndGetName(self, value):
        self._SetAndGetName = value

    def __str__(self):  # 使一个类的实例为一个字符串
        return str(self.abc) + ' ' + self.name  # 抛弃默认实例


if __name__ == '__main__':
    a = Rec()
    print(a)  # 输出 1 sdhjf
    print(a.abc)  # 输出 1
    print(a.name)  # 输出 sdhjf

    a.SetAndGetName = 'cbas'
    print(a.SetAndGetName)

你可能感兴趣的:(Python)