1.面向对象的三大特性
- 封装
- 继承
- 多态
2.类与对象的理解与封装特性
类是事物抽象的集合,对象是事物具象的个体。(类–>实例化–>对象)
面向对象编程语言
- 类: 一个模板, (人类)—是一个抽象的, 没有实体的
- 对象: (eg: 张三, 李四)
- 属性: (表示这类东西的特征, 眼睛, 嘴巴, 鼻子)
- 方法: (表示这类物体可以做的事情, eg: 吃饭, 睡觉,学习)
3.定义类
格式:class 类名(object)
object代表是, 人类继承于哪一个类, 如果不知道继承哪个类, 就写object
class person(object):
#构造函数
def __init__(self,name,age,sex) -> None:
self.name = name
self.age = age
self.sex = sex
pass
#say函数
def say(self,say):
print("%s在说话:%s"% (self.name, say))
pass
#使用print,返回return的内容
def __str__(self) -> str:
return "Persons类的对象 姓名:%s, 年龄:%s, 性别:%s" % (self.name, self.age, self.sex)
pass
def __del__(self):
print("名字为%s的对象销毁,执行析构函数"% self.name)
pass
# 类实例化为对象
p1 = person("deng",18,"男")
p2 = person("xiaodeng",20,"女")
# 调用say函数
p1.say("hello world")
# 使用print,返回__str__(self)中return的内容
print(p1)
print(p2)
# 使用del,返回__del__(self)中return的内容
del p1
del p2
3.类的私有属性与方法
实例:定义一个关于银行用户的类
# 定义一个关于银行用户的类
class BankUser():
# 定义构造函数
def __init__(self,username, password, money) -> None:
self.__username = username # 在属性名前加上__变为私有属性
self.__password = password
self.__money = money
# 显示用户名的方法(公共方法)
def showName(self) -> str:
return self.__username
# 显示用户余额的方法(公共方法)
def showAccount(self) -> float:
return self.__money
# 取款的方法
def withdrawal(self, count) -> bool:
password = input("请输入帐户密码:")
# 判断密码
if password != self.__password:
print("密码错误")
return False
# 判断余额
if count > self.__money:
print("帐户余额不足")
return False
# 取款成功
self.__money -= count
print('取款成功。帐户余额为:%s'% self.__money)
def __test(self):
print("这是一个私有的测试方法")
def publicTest(self):
print("这是一个公有的测试方法")
# 调用私有的方法
self.__test()
def __str__(self) -> str:
return "用户:%s, 存款余额为:%s"%(self.__username, self.__money)
user1 = BankUser("alex", "123123", 1000)
print(user1)
print(user1.showName()) #通过公共方法来执行私有属性
print(user1.showAccount()) #通过公共方法来执行私有属性
# user1.__test() #调用不了,需要通过一个公共方法来调用这个私用方法,如下所示
user1.publicTest()
# user1.withdrawal(500)
4.类的继承
# 定义一个动物类(基类)
class Animals(object):
def __init__(self, name, age):
self.name = name
self.age= age
print("动物类的构造函数执行完成")
def eat(self):
print('eating......')
# 定义一个狗类(派生类)
class Dog(Animals):
def __init__(self, name, age, type):
# 先执行父类的构造函数
super().__init__(name, age) # super()方法指向类父
# 添加该类的新的属性
self.type = type
print("狗类的构造函数执行完成")
# 狗吃的东西的类进行重写
def eat(self):
super().eat()
print("我喜欢吃骨头")
pass
class Cat(Animals):
def __init__(self, name, age, color):
super().__init__(name, age)
self.color = color
def eat(self):
super().eat()
print("我喜欢吃鱼")
dog1 = Dog("旺财", 2, "中华田园犬")
print(dog1.type)
dog1.eat()
cat1 = Cat("咪咪", 3, "奶牛色")
print(cat1.color)
cat1.eat()
标签:__,.__,name,Python,self,基础,对象,print,def
From: https://blog.csdn.net/weixin_53598426/article/details/139840762