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
将属性设置为私有权限实际上就是将该属性更名为 _类名__属性名
>>> c1._C__a 1