面向对象中

一.魔法方法(特殊方法)

形如__开头__结尾的这类方法统称为魔法方法
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值