注:在类中中函数称为方法,属性对应函数中的形参
知识链接:
https://www.crifan.com/summary_the_meaning_of_self_and___init___in_python_and_why_need_them/
1、init() 特殊方法:类的初始化方法
注:前后两个下划线
2、self参数(self是个object)
没有添加self.name,name此处的name就是该函数下的局部变量
在类的代码(函数)中,需要访问当前的实例中的变量和函数的,即,访问Instance中的:
----对应的变量(property):Instance.ProperyNam,去读取之前的值和写入新的值
----调用对应函数(function):Instance.function(),即执行对应的动作
而需要访问实例的变量和调用实例的函数,当然需要对应的实例Instance对象本身
而Python中就规定好了,函数的第一个参数,就必须是实例对象本身,并且建议,约定俗成,把其名字写为self
3、创建类------class(object) Python2.7中定义类中最好填写object(类的实例化的对象)
class User():
def __init__(self,username,password):
self.username = username
self.password = password
print "the" + username.title() +"'s password is "+ " "+password
user_login = User("Tester Jingel","123456") #调用类
4、属性值操作
(1)给属性值默认值
class User():
def init(self,username,password):
self.age = 10
(2)修改属性值
----直接修改
self.age = 20
----通过方法修改属性值
def update(self,age):
self.age = 30
----通过方法对属性值进行递增修改
def update(self.ages):
self.age +=ages
5、类的继承
Python2.7中对于父类中要填写object-----class Demo(object),不然继承运行时报错
TypeError: super() argument 1 must be type, not classobj
Python3继承:super().init(属性值1,属性值2......属性值n)
Python2.7继承:super(子类名,对象self).init(属性值1,属性值2......属性值n)
class Demo(object):
def __init__(self,username,age):
self.username = username
self.age = age
def user_message(self):
print "username is "+self.username+"and age is "+str(self.age)
def useless(self): #------对应重写父类方法8
print "this is useless hanshu"
prt = Demo(‘Tester Jingel’ ,23)
prt.user_message()
Prt.useless()
class Demo2(Demo):
def __init__(self,username,age):
super(Demo2,self).__init__(username,age)
def descripe(self): #子类定义属性个和方法6
self.pwd = 222222
print self.pwd
def useless(self): #------对应重写父类方法8
print 'hello'
print '\n'
prt2 = Demo2(‘Tester Jingel’ , 23)
prt2.user_message()
prt2.descripe()
prt2.useless()
6、子类定义属性和方法
即在子类下定义自己的属性和方法即可
7、重写父类的方法
即父类下的方法有一个userless()的方法,在子类下面新建一个相同名称的方法,即可重写父类的该方法了。
8、导入类
from demo import Demo,Demo2
倒入整个模块 :Import demo
导入模块的所有类:from demo import *
掷骰子案例:
from random import randint
class Die():
def __init__(self,sides=6):
self.sides = raw_input(u'输入筛子的面数,不输入就默认值\n')
def rol_die(self):
print '这个骰子的面数是:'.decode("utf-8")+" "+ str(self.sides)
i =1
num = input(u'输入筛子数量最大值(必须输入)\n')
while i <=10:
x = randint(1,num)
print "掷出的筛子点数是:" +" "+str(x)
i+=1
dies = Die()
dies.rol_die()
输出结果:
输入筛子的面数,不输入就默认值
6
这个骰子的面数是: 6
输入筛子数量最大值(必须输入)
6
掷出的筛子点数是: 6
掷出的筛子点数是: 5
掷出的筛子点数是: 3
掷出的筛子点数是: 6
掷出的筛子点数是: 3
掷出的筛子点数是: 5
掷出的筛子点数是: 2
掷出的筛子点数是: 6
掷出的筛子点数是: 4
掷出的筛子点数是: 2
网友评论