python-变量私有化、前单下划线、双下划线、头尾双下划线、后单下划线

变量私有化

1、变量前加__(两个下划线),则变量私有化
2、私有化的变量不能在外部直接访问,可以在类的内部随意使用。
3、子类不会继承父类私有化的变量

class Animal():
	def eat(self):
		print('动物在吃东西')
		pass
	def __run(self):
		print('动物在跑')
		pass
	pass

class Dog(Animal):
	pass

dog1 = Dog()
dog1.eat()
dog1.__run()

报错:
动物在吃东西
Traceback (most recent call last):

AttributeError: ‘Dog’ object has no attribute ‘__run’

class Animal():
	def eat(self):
		print('动物在吃东西')
		self.__run()
		pass
	def __run(self):
		print('动物在跑')
		pass
	pass

class Dog(Animal):
	pass

dog1 = Dog()
dog1.eat()

输出:
动物在吃东西
动物在跑

变量设为私有之后,可以通过设置类似java中的get、set方法来获取或修改,并且可以在方法中设置修改的条件。

class Person():
	__age = 0
	__name = '无名氏'
	def getAge(self):
		return __age
	def setAge(self,age):
		if (age > 0 & age<150):
			Person.__age = age
		else:
			print('年龄非法')
	def __init__(self,name,age):
		Person.__age = age
		Person.__name = name
		pass
	def __str__(self):
		return('{}年龄{}'.format(Person.__name,Person.__age))

person1 = Person('Nick',21)
print(person1)
person1.setAge(22)
print(person1)

输出:
Nick年龄21
Nick年龄22

前单下划线、双下划线、头尾双下划线、后单下划线:

单下划线:_XXX,即protected类型的变量,只允许类本身和其子类进行访问,子类可继承。

双下划线:__XX,即private类型的变量

头尾双下划线:魔法方法,一般为python自由方法,自己定义方法时不要定义这样的方法。

后单下划线:当属性名和python 关键字冲突时,可以这样定义来避免冲突。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值