Python面向对象(二)

身份运算符

isis not
  1. 运算符isa is b判断两个对象是不是同一个对象(即内存地址是否相同),a is b语句类似于id(a) == id(b)
  2. 运算符is not:同理,类似于id(a) != id(b)
is==的区别
  1. is 用于判断两个变量的对象是否为同一个,即判断对象内存地址的;
  2. == 用于判断两个变量引用的对象的值是否等;

私有属性和私有方法

在定义属性或者方法时,属性名或者方法名以两个下划线开始__即表示该属性或者方法为私有
  1. 私有属性只能在对象内部被使用,不能再外部被访问修改,私有方法同理;
  2. 私有属性可以在对象方法中被访问;
  3. 下例中__age__secret()不能被外界直接访问,可用_Women__age_Women__secret()方式进行访问,即(_ClassName__propertiename_ClassName__methodname());
class Women():

    def __init__(self, name):

        self.name = name
        self.__age = 18

    def __secret(self):

        print("%s age is %d" % (self.name, self.__age))

单继承

继承概念:子类拥有父类的所有属性和方法,同时子类可以添加自有的特殊属性和方法
继承语法:class 子类(父类):
子类中方法重写:

  1. 对父类方法进行覆盖:子类可以继承父类的所有属性和方法,但当父类中封装的方法不适合子类时,可以在子类中针对父类中的同名方法进行重写,子类中重写的方法将覆盖父类方法;
  2. 对父类方法进行扩展:
class subclass(Parent):
	def method(self):     #首先,要在子类中重写父类Parent中同名方法
		...
		super().method()  #其次,使用super()对象继承父类的方法
		...               #最后,在子类的重写方法中编写特殊扩展功能

1. 只有方法的父类继承:

class 子类名(父类名)def subclass_method(self):
		pass

2. 属性继承与扩展(即继承__init__()方法):

  1. 如果完全继承父类属性只需添加子类特有方法即可;
  2. 如果需要在父类基础上扩展子类属性,则采用:
class Parent():
	def __init__(self, properties):
		...

class Subclass(Parent):
	def __init__(self, properties, specialproprty):
		super().__init__(properties)     #继承属性本质上就是扩展父类__init__()方法
			...

多继承

多继承可以让子类同时具有多个父类的属性和方法
语法:class 子类(父类1, 父类2, ... ,父类n):
示例代码:

class A():
	def test(self):
		print("test method")

class B():
	def demo():
		print("demo method")

class C(A, B):    #C类继承自A和B类
	pass

c = C()
c.test()         #C类创建的对象可以调用A类的方法
c.demo()         #C类创建的对象也可以调用B类的方法

多继承注意事项:
如果不同的父类中中存在相同的方法,子类调用该方法是时调用哪一个父类中的该方法?__mro__方法可以显示方法搜索顺序。

显示打印类中方法的搜索顺序:
调用__mro__方法:print(ClassName.__mro__)


call方法

  1. __call__方法:
class School(object):

    def __init__(self, name):
        self.name = name

    def __call__(self):
        print("执行call方法")

s = School('BJ School')
s()   # 实例名的后加括号,则会执行call方法代码块里的语句
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python面向对象编程是一种编程范式,它将程序组织成对象的集合,每个对象都有自己的属性和方法。在Python中,可以通过定义类来创建对象,并通过实例化类来创建具体的对象。引用[1]中的代码示例展示了一个Animal类,其中包含了初始化方法和一个__str__方法来返回对象的描述信息。通过这个类,可以创建Animal对象,并通过print函数输出对象。引用中的代码示例展示了如何使用@property装饰器来定义类的属性和属性的访问方法。通过这种方式,可以在访问属性时像访问普通属性一样使用点号,而不需要使用方法调用的方式。引用中的代码示例展示了多态在Python中的应用。多态是面向对象编程的重要概念,它允许不同的对象以相同的方式对外部访问,但具体的实现可能不同。在这个示例中,father、son和daughter类都继承了father类,并重写了tell方法。通过调用不同的对象的tell方法,可以看到不同的输出结果。总之,Python面向对象编程是一种灵活且强大的编程方式,它允许开发者以对象为中心来思考和组织代码,提高了代码的可读性和可维护性。通过定义类、创建对象和使用类的属性和方法,可以实现丰富多样的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python面向对象(全套)](https://blog.csdn.net/Thewei666/article/details/126652501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

E. Zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值