python init方法是不是私有方法_Python中私有方法和私有属性

私有属性只能在类内部使用,对象不能使用,但是,我们可以通过在类内部定义公有方法对私有属性进行调用或修改,然后对象在调用这个公有方法使用。

###私有属性和私有方法########

#在属性名和方法名前面加上 __

class Person(object):

def __init__(self):

# 公有属性

self.name = "李四"

#私有属性

self.__age = 18

#定义公有方法

def show_info(self):

# 私有属性只能在类内部使用,可以通过内部公有方法修改,

self.__age = 29

print(self.name, self.__age)

#调用私有方法

#在类内部使用私有方法,可以通过内部公有方法调用

result = self.__show_address()

print( result)

#定义私有方法

def __show_address(self):

return "我的家在东北"

#定义对象,调用类

person = Person()

person.show_info()

#测试对象调用私有属性,结果报错,对象不能使用私有属性,私有属性只能在内部使用

#print(person.name, person.age)

#测试对象调用私有方法,结果报错,私有方法只能在类内部使用

#person.show_address()

输出:

李四 29

我的家在东北

===================================================================

扩展:私有属性和私有方法,只是把名称进行了伪装,改成了其他名称,导致我们访问失败,

如果我们拿到了伪装后的名字,对象还是可以类外面调用私有方法和私有属性

Notice::python中的私有没有做到绝对私有(非常规方法)

#查看对象属性

dict (可以使用对象或者类,查看对象或者类属性)

通过print(person.dict)拿到对象person的属性名称

#查看对象属性和方法

dir (可以查看对象或者类属性和方法)

通过print(dir(person))查看到对象person的属性和方法名称

看到伪装后的方法和属性名称,对象就可以调用

2.子类继承父类,默认无法使用父类的私有方法和属性

====================

扩展:

但是,如果我们拿到父类私有属性和私有方法的名称,子类也可以调用

3.私有属性的修改

私有属性只能在类内部进行修改

通过定义公有方法修改,让后对象调用公有方法

=====================

扩展:

如果我们知道私有属性伪装后的名字,我们也可以通过伪装后的名字去修改私有属性,

我们在外面通过对象调用私有属性名称去修改的,不是真的修改,而是对对象添加了一个__开头的属性,并没有做到修改私有属性

总结:私有方法和私有属性只能在类内部使用,私有属性的修改也只能在类内部修改(非常规操作除外)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值