python 面向对象编程
Posted CSR-kkk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 面向对象编程相关的知识,希望对你有一定的参考价值。
面向对象?
对象: 属性 + 行为
面向过程 VS 面向对象
- 面向过程:
- 以过程为中心的编程思想
- 简单的事情
- (把大象装进冰箱)
- 面向对象
- 更符合人类思维习惯的编程思想
- 面向对象开发就是不断地创建对象,使用对象,操作对象做事情
- 复杂的事情
- (造一辆车)
什么是面向对象?
- 语言层面:封装代码和数据
- 规格层面:一系列可被使用的公共接口
- 概念层面:拥有责任的抽象
类、方法、类变量的定义
# 类
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 面向对象编程的主要内容,如果未能解决你的问题,请参考以下文章