Pythonself的用法扫盲

Posted 奔跑的金鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pythonself的用法扫盲相关的知识,希望对你有一定的参考价值。

在Python中,我们有两个重要的概念:类与实例

例如:我们在现实生活中人就是一个类,实例就是具体到某一个男人(张三、李四等)

1.类:定义人这个类

class People(object):
	pass

2.实例:创建实例是通过类名+()实现

people1 = People()

3.类就像一个模板一样,我们现在在这个模板上加一些属性:age,name,使用内置方法__init__方法

class People(object):
	def __init__(self,name,age):
		self.name = name
		self.age = age

说明:①__init__方法的第一个参数永远是self,表示创建的类实例本身,在__init__内部就可以把各种属性都绑定到self,self就指向创建的实例本身 ②有了__init__方法就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传入

#-*- coding:utf-8 -*-
class People(object):
	def __init__(self,name,age):
		self.name = name
		self.age = age


people1 = People(\'Jack\',23)

print(people1.name)
#运行结果:Jack
print(people1.age)
#运行结果:23	

这里的self是指类本身,self.name就是类People的属性变量,是People所有。name是外部传来的参数,不是People自带的。self.name = name的意思是把外部传来的参数赋给People自己的属性变量self.name

4.在类中定义函数时,第一参数永远是类的本身实例变量self,传递参数时不需要传递该参数

5.类实例本身就有这些数据,那么要访问这些数据,就没必要从外部访问,直接在类中定义访问数据的函数,这样,就可以把数据“封装”起来

#-*- coding:utf-8 -*-
class People(object):
	def __init__(self,name,age):
		self.name = name
		self.age = age
	def print_age(self):
		print("%s:%s" %(self.name,self.age))


people1 = People(\'Jack\',23)
people1.print_age()
#运行结果:Jack:23
这些逻辑被封装起来了,调用起来相对容易些,但却不知道内部实现的细节。

6.如果要让内部属性不被外部访问,那么只需要加两个下划线,就变成了私有变量,只有内部可以访问,外部无法访问。

#-*- coding:utf-8 -*-
class People(object):
	def __init__(self,name,age):
		self.__name = name
		self.__age = age
	def print_age(self):
		print("%s:%s" %(self.__name,self.__age))


people1 = People(\'Jack\',23)
people1.print_age()
#运行结果:Jack:23
使用外部访问试试I don\'t know smile
#-*- coding:utf-8 -*-
class People(object):
	def __init__(self,name,age):
		self.__name = name
		self.__age = age
	def print_age(self):
		print("%s:%s" %(self.__name,self.__age))


people1 = People(\'Jack\',23)
people1.name
#报错:\'People\' object has no attribute \'name\'
people1.__name
#报错:\'People\' object has no attribute \'__name\'

以上是关于Pythonself的用法扫盲的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 加载源图像固定用法(代码片段,不全)

SQL Select 语句的用法

jquery中的$的特殊用法

Xcode中的变量模板(variable template)的用法

创建片段而不从 java 代码实例化它

微信小程序第七天WXML语法之模板用法