一.类的属性和对象的属性
#定义类
class Fish:
#类的属性
name = "美人鱼"
#对象的属性
def __init__(self,weight):
self.weight = weight
def swim(self):
print("我是一只鱼,游啊游!")
#创建对象
fish = Fish(80)
f1 = Fish(100)
#访问类的属性
print(Fish.name)
print(fish.name)
#访问对象的属性
print(fish.weight)
#print(Fish.weight) #类不能访问对象的属性
'''
访问类的属性和对象的属性的总结:
1.类的属性可以使用类名访问(推荐) 类的属性也可以通过对象访问(不推荐)
2.对象的属性可以使用对象访问(推荐) 对象的属性不可以通过类名访问(报错)
3.在项目中 类的属性一般通过类名访问 对象的属性一般通过对象访问
'''
#修改类的属性
Fish.name = "虞美人"
fish.name = "草鱼" #通过对象去修改类的属性时,不是对象修改了类的属性,只是给当前对象动态的添加了一个属性.
print(Fish.name)
print(fish.name)
print(f1.name) #其他对象访问的还是类原来的属性 #虞美人
#修改对象的属性
fish.weight = 98
Fish.weight = 107
print(fish.weight)
print(Fish.weight)
'''
修改类的属性和对象的属性的总结:
1.类可以修改类的属性 对象在修改类的属性的时候,其实是动态的给当前对象添加了一个属性.其他的对象不能访问修改后的值.
2.对象可以修改对象的属性 类也可以修改对象的属性.
3.在项目中 一般情况下,通过类名去修改类的属性 通过对象名去修改对象的属性.
'''
二、封装
1.概念
广义的封装:函数和类的定义本身,就是封装的体现
狭义的封装:一个类的某些属性,在使用的过程 中,不希望被外界直接访问,而是把这个属性给作为私有的【只有当前类持有】,然后暴露给外界一个访问的方法即可【间接访问属性】
封装的本质:就是属性私有化的过程
封装的好处:提高了数据的安全性,提高了数据的复用性
2.属性私有化和方法私有化
如果想让成员变量不被外界直接访问,则可以在属性名称的前面添加两个下划线__,成员变量则被称为私有成员变量
私有属性的特点:只能在类的内部直接被访问,在外界不能直接访问
代码演示:
'''
下面的案例是:公有属性和公有方法,在任意位置可以直接访问
class Girl:
def __init__(self,name,sex,age):
self.name = name
self.sex = sex
self.age = age
def say(self):
print(self.name,"说:帅哥帮个忙呗!")
hong = Girl("小红","美女",18)
hong.say()
print(hong.sex)
print(hong.age)
'''
'''
私有属性和私有方法
'''
class Girl:
def __init__(self,name,sex,age):
self.name = name
self.sex = sex
#比如女孩的年龄是秘密,在外面不能轻易地访问,需要设置为私有属性
'''
私有属性:
1.写法:在属性的前面加两个下划线 __age
2.用法:只能在类的内部进行访问,不能在类的外部进行访问
'''
self.__age = age
def say(self):
print(self.name,"说:帅哥帮个忙呗!")
#在类的内部可以访问私有属性
def sayAge(self,friend):
if friend == "熊明":
print(f"{self.name},偷偷地告诉她男友说,她的年龄是:{self.__age}")
else:
print("女生的年龄是秘密不知道吗?活该你单身!")
'''
私有方法:
1.写法:在方法名的前面加上两个下划线 __kiss
2.用法:只能在类的内部访问,不能在类的外部访问.
'''
def __kiss(self):