python 面向对象编程

Posted CSR-kkk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 面向对象编程相关的知识,希望对你有一定的参考价值。

面向对象?

对象: 属性 + 行为

面向过程 VS 面向对象

  • 面向过程:
    1. 以过程为中心的编程思想
    2. 简单的事情
    3. (把大象装进冰箱)
  • 面向对象
    1. 更符合人类思维习惯的编程思想
    2. 面向对象开发就是不断地创建对象,使用对象,操作对象做事情
    3. 复杂的事情
    4. (造一辆车)

什么是面向对象?

  • 语言层面:封装代码和数据
  • 规格层面:一系列可被使用的公共接口
  • 概念层面:拥有责任的抽象


类、方法、类变量的定义

# 类
class Person:
	# 静态属性
    name = "default"
    age = 0
    gender = 'male'
    weight = 0
    # 私有属性(不能直接访问,可以类方法调用)
    __money = 1000

    # 构造方法,可以来初始化
    def __init__(self, name, age, gender, weight):
        print("init")
        self.name = name
        self.age = age
        self.gender = gender
        self.weight = weight
	
	# 类方法
    def eat(self):
        print(f"{self.name} is eating")

    def play(self):
        print(f"{self.name} is playing")
	
	def get_money(self):
		return self.__money


if __name__ == '__main__':
    zs = Person('zhangsan',10,'男',60)
    print(f"zs的姓名是:{zs.name},年龄是:{zs.age},性别是:{zs.gender},体重是:{zs.weight}")
    zs.eat()
    zs.play()

"""
init
zs的姓名是:zhangsan,年龄是:10,性别是:男,体重是:60
zhangsan is eating
zhangsan is playing
"""

拓展:

访问私有属性与方法:可以使用 dir 来访问,获得私有变量的变量名,然后进行调用打印

print(dir(zs))
print(zs._Person__money)

# ['_Person__money', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'eat', 'gender', 'name', 'play', 'weight']
# 1000


实例引用、实例变量使用

类变量需要类来引用,实例变量需要实例来引用

类不能访问方法,实例可以访问方法。

若想用类来调用方法需要在方法上加上 @classmethod



继承

被继承者:父类,又叫基类,超类
class Person:

继承者:子类
class Singer(Person):

子类可以继承父类的 属性 和 方法,父类的私有的属性、方法,不会被子类继承,也不能被访问.
如果子类拥有父类一样的名字的方法, 父类的方法将被覆盖(与参数无关)


super()可访问父类的属性和方法

以上是关于python 面向对象编程的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

面向对象编程其实很简单--python面向对象(初级篇)

Python基础-第六天-面向对象编程

面向对象编程其实很简单——Python 面向对象(初级篇)

python之面向对象编程一

python基础之面向对象