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