Python-面向对象编程总结(类、对象、派生、继承、方法、内置函数等(4)

本文总结了Python的面向对象编程概念,包括类、对象、构造器、静态方法、类方法、私有方法等。探讨了实例变量、类变量、子类与派生、继承和多态。还讲解了特殊方法如__init__、__str__、__repr__,以及如何限制实例变量、实现迭代和属性的获取与设置。最后介绍了枚举类和内置函数的应用。
摘要由CSDN通过智能技术生成

Traceback (most recent call last):
  File “learnoop.py”, line 20, in
    print(Girl.__private_name)
AttributeError: type object ‘Girl’ has no attribute ‘__private_name’

方法

自带方法

常用自带方法

方法 作用
__new__ 在__init__函数之前执行,创建并返回一个新的对象。利用这个方法和类属性的特性可以实现设计模式中的单例模式
__str__ 在使用print语句时被调用。
__call__ 将实例对象作为函数调用。
__getitem__,__setitem__,__delitem__ 将类封装成一个字典的形式。
构造器

__init__()

方法的第一个参数为self关键字,类似于C++语言的this

当然,可以没有,那么这个方法建议你放到外面,作为函数,因为它和这个类没有太大关系。

def __init__(self):
    self.name = 'WangXiuJie'
girl = Girl()
print(girl.name)

结果:

WangXiuJie

__new__()

实现单例模式

def __new__(cls, *args, **kwargs):

    if not hasattr(Girl,'instance'):
        cls.instance = object.__new__(cls)
    return cls.instance
girl = Girl()
girl2 = Girl()
girl.name = 'ZhouDongYu'
print(girl2.name)

结果:

ZhouDongYu

即girl与girl2是同一个人。类似于小名/别名,但它们其实是一个。我们有一个对象就好了,不要三心二意。

解构器

__del__()

python有垃圾回收机制,不怎么用这个方法,不写了。

静态方法

使用修饰符@staticmethod

对于静态方法,不需要self,能够通过类对象访问

@staticmethod
def get_name():
    return Girl.__name__
print(Girl.get_name())

Girl

类方法

使用修饰符@classmethod

对于类⽅法,第⼀个参数必须是类对象cls,能够通过实例对象和类对象去访问。

@classmethod
def set_name(cls, newName):
    cls.name = newName
girl.set_name('Baby')
print(Girl.name)

Baby

私有方法

方法名前为__,不能从外部调用。

def __private_hobby(self):
    print(f'我是{self.name},一名腐女,爱看男男~~')
girl.__private_hobby()

结果:

Traceback (most recent call last):
  File “learnoop.py”, line 56, in
    girl.__private_hobby()
AttributeError: ‘Girl’ object has no attribute ‘__private_hobby’

其他方法
def hobby(self):
    print(f'我是{self.name},一名腐女,爱看男男(划掉)学习~~')
girl.hobby()

我是WangXiuJie,一名腐女,爱看男男(划掉)学习~~

对象/实例

在类后面加(),就可以得到类的一个实例——对象了,前面已经展示过了。

自带变量

这里指的是类变量,以及__init__()方法绑定到实例的属性。

print(dir(girl)) 

[‘_Girl__private_hobby’, ‘_Girl__private_name’, ‘__class__’, ‘__delattr__’, ‘__dict__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__getattribute__’, ‘__gt__’, ‘__hash__’, ‘_
_init__’, ‘__init_subclass__’, ‘__le__’, ‘__lt__’, ‘__module__’,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值