类由三部分组成
1、类名:大驼峰式命名法,如:DogClass(每个单词首字母大写)
2、属性:值,如:姓名、性别、年龄等
3、方法:行为,如:各种动作
str()、int()、 float()、 bool()、 list()、 dict()等都是特殊类名,没有使用大驼峰式命名法
类的简单代码
class Cat: #定义类名
def __init__(self,name,age): #self自动添加属性
self.name=name
self.age=age
def hello_kity(self): #设置方法
print(f'姓名:{self.name},年龄:{self.age}')
c=Cat('kity',3) #类调用
c.hello_kity() #方法函数调用
面向对象三大特征之封装
封装:保证对象中数据安全,通过封装控制数据的访问权限,确保用户设置的数据正确
封装的实现方法:
1、修改属性名
2、getter获取属性,有返回值(可以使用getter来返回一些计算属性)
3、setter设置属性,无返回值(可以对属性进行修改)
class NewClass:
def __init__(self,name,age):
self.hidden_name=name
self.hidden_age=age
def get_name(self): #getter方法获取属性,有返回值
return self.hidden_name
def set_name(self,name): #setter方法设置修改属性,无返回值
self.hidden_name=name
def get_age(self):
return self.hidden_age
def set_age(self,age):
if age>=0:
self.hidden_age=age
nc=NewClass('赵丽颖',18)
print(nc.hidden_name,nc.hidden_age) #赵丽颖 18
nc.set_age(30)
print(nc.get_age()) #30
利用装饰器对代码进行封装 (与上一段码进行比较)
class NewClass:
def __init__(self,name,age):
self._name=name #有单个_下划线开头代表有权限
self._age=age
@property #为getter方法添加property装饰器
def name(self):
return self._name
@name.setter #为setter方法添加 属性名.setter 装饰器
def name(self,name):
self._name=name
@property
def age(self):
return self._age
@age.setter
def age(self,age):
if age>=0:
self._age=age
nc=NewClass('杨幂',18)
print(nc.name,nc.age)
nc.age=28 #修改年龄
print(nc.age)
面向对象三大特征之继承
class Father: #不写括号,默认父类是object
def __init__(self,name):
self.name=name
def style(self):
print(f'{self.name}长得超级帅')
def height(self):
print(f'{self.name}身高一米八')
class Son(Father): #括号内代表括号外的父类
def eye(self):
print(f'{self.name}双眼皮')
f=Father('大明')
s=Son('小明')
f.style() #大明长得超级帅
f.height() #大明身高一米八
s.style() #小明长得超级帅
s.height() #小明身高一米八
s.eye() #小明双眼皮
琐碎知识点
isinstance() 检查一个对象是否是一个类的实例(实例:照猫画虎,其中猫就是老虎的实例)
issubclass(str,object)检查前者是否是后者的子类
object是所有的类的祖先,如果定义类时候,不指定父类,则默认继承object
小白笔记,还请多多指教