一.魔法方法(特殊方法)
形如__开头__结尾的这类方法统称为魔法方法
1.–init–(self):定义类中属性的特殊方法,当进行实例化对象时会自动调用该方法初始化该方法中的属性。
语法:
def __init__(self,name,age):
self.name = name
self.age = age
2.–str–(self):在类中定义了该方法,当进行实例化对象是,直接使用打印实例对象可直接访问到类中的所有属性。
语法:
def __str__(self):
self.name = name
self.age = age
二.封装的引入
1.出现封装的原因:需要一种方式增强数据的安全性
a.属性不能随意修改
b.属于不能改为任意的值
2.封装是面向对象的三大特性之一,是编程中的一种编程思想
3.封装的作用是隐藏对象中一些不被外界随意访问到的属性和方法
class Dog():
def __init__(self,name,age):
self.hidden_name = name
self.age = age
def run(self):
print('{}的年龄为{}岁'.format(self.hidden_name,self.age))
d = Dog('德牧',3)
print(d.name)
以上便是将属性name定义成hiddenname来达到封装的效果
4.getter方法:该方法是提供获取封装后类内部属性的方法
class Dog():
def __init__(self,name,age):
self.hidden_name = name
self.age = age
def run(self):
print('{}的年龄为{}岁'.format(self.hidden_name,self.age))
def get_name(self):
return self.hidden_name
d = Dog('德牧',24)
print(d.get_name())
5.setter方法:当封装后想要修改类内部的属性值可以使用该方法
class Dog():
def __init__(self,name,age):
self.hidden_name = name
self.age = age
def run(self):
print('{}的年龄为{}岁'.format(self.hidden_name,self.age))
def get_name(self):
return self.hidden_name
def set_name(self,name):
self.hidden_name = name
d = Dog('德牧',24)
print(d.get_name())
d.set_name('二哈')
print(d.get_name())
三.私有方法和私有属性
双下划线开头的来进行封装那么这种封装的方式其实是给属性起了另外的一个名字_ 类名 _ _ 属性名
class Dog():
def __init__(self,name,age):
self.__name = name
self.age = age
def run(self):
print('{}的年龄为{}岁'.format(self.hidden_name,self.age))
def get_name(self):
return self.hidden_name
def set_name(self,name):
self.hidden_name = name
d = Dog('德牧',24)
print(d._Dog__name)
1.私有属性(__xxx):在对应的属性名字之前加两下划线,该属性即可成为私有属性,外部无法访问和随意修改,私有属性只能在类的内部方法可以访问到和设置
class Dog():
def __init__(self,name,age):
self.__name = name
self.age = age
以上属性name即为私有属性,只能通过内部方法访问和修改
2.私有方法(__xxx):在对应的方法名字之前加两下划线,该方法即可成为私有方法,外部无法访问和随意使用该方法,私有方法只能通过在类的内部方法可以访问。
def __run(self):
pass
以上该方法即为私有方法
四.property装饰器
@property用来创建只读属性 @property装饰器会将方法转换为相同名称的只读属性
class Dog():
def __init__(self,name,age):
self.hidden_name = name
self.age = age
@property
def run(self):
print('{}的年龄为{}岁'.format(self.hidden_name,self.age))
def get_name(self):
return self.hidden_name
def set_name(self,name):
self.hidden_name = name
d = Dog('德牧',24)
d.run