Python Class

本文详细介绍了Python类的概念,包括类的定义、构造函数__init__、析构函数__del__等专有方法,以及公有/私有变量和方法。通过Human类示例展示了继承、方法重写、多继承。还讲解了访问私有变量的技巧(_类名__变量名),以及__str__、__repr__、__iter__、__getitem__、__getattr__等特殊方法的使用。

作者:zhuge···预计阅读 18 分钟·582 阅读·0 评论
Python Class

类(Class):用来描述具有相同的属性和方法的对象的集合。

类的专有方法:

__init__ : 构造函数,在生成对象时调用

__del__ : 析构函数,释放对象时使用

__repr__ : 打印,转换

__setitem__ : 按照索引赋值

__getitem__: 按照索引获取值

__len__: 获得长度

__cmp__: 比较运算

__call__: 函数调用

__add__: 加运算

__sub__: 减运算

__mul__: 乘运算

__truediv__: 除运算

__mod__: 求余运算

__pow__: 乘方


class Human:
    def __init__(self, name, sex):
        # 公有变量
        self.name = name
        self.sex = sex

        # 私有变量         self.__name = f'name:{self.name},sex:{self.sex}'

    # 私有方法     def __creategotostr(self, place):         return f'name:{self.name},sex:{self.sex},go to {place}'

    # 公有方法     def showinfo(self):         print(self.__name)

    def go(self, place):         print(self.__creategotostr(place))

# 继承 class HumanCity(Human):     def init(self, name, sex, city):         # super.init(self,name, sex)         Human.init(self, name, sex)         self.city = city

    # 重写父类     def go(self, place):         print(f'name:{self.name},sex:{self.sex},from {self.city} go to {place}')

if name == 'main':     human_1 = Human('zhangsan', 'male')     human_1.showinfo()     human_1.go('sea')     human_1.sex  # 可以访问     # human_1.__name #不可以访问     # human_1.__creategotostr('') #不可以访问

    humancity = HumanCity('lisi', 'male', 'hangzhou')     humancity.showinfo()     humancity.go('xizang')

#如果有多个继承 # class SubClass(F1,F2,F2): #     F1.init(self) #     F1.init(self) #     F1.init(self) #     self.init(self)

#如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。 #子类不重写 init,实例化子类时,会自动调用父类定义的 init。 #https://www.runoob.com/w3cnote/python-extends-init.html

访问已经设定的私有变量

class tst:
    def init(self,v):
        self.__var = v
        self.var = v
t=tst('vvv')
print(t.var)
#vvv

print(t.__var) #报错

print(t._tst__var)#即可以通过 ._类名+私有变量名,实现访问 #vvv


扩展:

class tst:
    def init(self,name):
        self.name=name

    def str(self):         return 'Your submit:' + self.name

    repr=str

    #用于for … in循环     def iter(self):         return  self     def getitem(self, item):         if item > 10000:             raise StopIteration()         a,b =1,1         for x in range(item):             a,b =b ,a+b         return  self.name+'-' + str(a)

    def getattr(self, item):         if item =='parm':             return 'I am here'

x= tst('zhangsan') print(x) #Your submit:zhangsan print (x.name) #zhangsan print (x.parm) #I am here print(x[3]) #zhangsan-3


相关文章

评论

加载中...