《零基础入门学习Python》学习过程笔记【36,37类】

1self是什么 self相当与C++中的this(指本对象)

当对象的方法被调用时,对象会将对象本身作为第一个参数传给这个方法的第一个参数

2如何定义一个类?关键字class 类名开头第一个字母大写(和Java一样)

>>> class A:
	a=1
	b=2
	def haha(self,x):
		self.i=x  #创建该对象内的变量self.i
		self.x=x  #创建该对象内的变量self.x
	def p(self):
		print(self.i)  #在该类的其他方法中也可以读取该对象的变量self.i和self.x
		print(self.x)
	def change1(self):
		self.i=1       #在该类的其他方法中还可以改变对象变量的值
		self.x=1
		print(self.i)
		print(self.x)
	def change2(self):
		a=2            #这里只是创建了局部变量a,b,这两个值不会影响该类同名属性的值
		b=2
		print(a)
		print(b)

		
>>> a1=A()
>>> a1.haha(233)
>>> a1.p()
233
233
>>> a1.change1()
1
1
>>> a1.change2()
2
2

综上self.x 为该对象的变量,在该对象的方法中可以使用,使用时要写self.x不能省掉self。且不能在该类的外面对该变量进行使用,例如

>>> a1.self.i  会报错

 该对象本身的变量可以在该变量的方法中使用


3在写代码中出现了一个问题,这说明不能在函数内部直接使用该类的属性,如果使用那是只在该方法中创建了一个局部变量。该变量的改变,不会影响同名属性的改变

>>> class B:
	a=1
	b=2
	c=3
	def __init__(self,a1,a2,a3):
		a=a1
		b=a2
		c=a3
	def ceshi(self):
		a=1
		b=1
		c=1
	def p3(self):
		print(self.a)
		print(self.b)
		print(self.c)
>>> b3=B()
>>> b3.p3()
1
2
3
>>> b3.ceshi()
>>> b3.p3()
1
2
3

4如何在类的方法内部使用该类的属性?self.方法名

5.python中会被自动调用的方法? 被双下划线__包围的方法

注:一个类只能有一个__init__()方法

3__init__(self,[参数1],[参数2...])方法:在创建该类对象的时候被自动调用(相当于构造函数)

>>> class B:
	def __init__(self):
		self.q=1
		self.w=1
		self.e=1
	def p1(self):
		print(self.q)
		print(self.w)
		print(self.e)

		
>>> b1=B()
>>> b1.p1()
1
1
1

>>> class B:
	def __init__(self,haha):
		self.haha=haha
	def p2(self):
		print(self.haha)

		
>>> b2=B(233)
>>> b2.p2()
233

6.在默认情况下,类中属性和方法的权限?   在默认情况下对象的属性和方法都是共有的,可以在外部通过对象名.来使用

>>> class C:
	a=1
	def b(self):
		print("233")

		
>>> c1=C()
>>> c1.a
1
>>> c1.b()
233

7.如何在python中定义私有变量? 在变量名前加双下划线__

>>> c1=C()
>>> c1.__a
Traceback (most recent call last):
  File "<pyshell#75>", line 1, in <module>
    c1.__a
AttributeError: 'C' object has no attribute '__a'
>>> c1.haha()
1


8.如何在函数外部直接访问该类的私有属性?

将属性设置为私有权限实际上就是将该属性更名为 _类名__属性名 

>>> c1._C__a
1







原文地址:https://www.cnblogs.com/iamjuruo/p/7470884.html