class Student : #定义一个类
myname = 'xiaohong'
__age__ = 18;
def __init__(self,sex): # 构造函数,初始化数据
self.sex = sex
def hello(self):#self 类本身
print('Student hello')
def say(self,name):
print('hi ,%s' %name) # %s是占位符 %name 是方法传进来的参数 相当于局部变量
print('i am '+ self.myname +', is ' + self.sex) # %self 相当于全局变量
print('i am %s , is %s , age %i' %(self.myname, self.sex,self.__age__))
def setage(self,age):
self.__age__ = age;
s = Student('nan')#创建对象使用括号
s.myname = 'asd'; #公共变量 可以修改
print('age:' + str(s.__age__)) # 私有变量 只能访问 不能修改
s.hello()
s.setage(19)
s.say('xiaohua')
print('*' * 8 )
class People (Student): #继承 继承具有传递性
def hello(self): #子类覆盖父类的方法
print(' i am people')
p = People('nan') # 父类的init 带有参数,子类创建的时候也需要带参数,也就是说默认继承父类的构造方法
print( '使用父类的myname:' + p.myname)
p.setage(15) # 使用父的方法
p.say('xiaoming')
print( " hasattr(p,'myname') 是否有myname : "+ str(hasattr(p,'myname')))
setattr(p,'addr','python') # 设置属性
print(hasattr(p,'addr'))
print(p.addr)
a = getattr(p,'addr')
print(a)
这是输出
age:18
Student hello
hi ,xiaohua
i am asd, is nan
i am asd , is nan , age 19
********
使用父类的myname:xiaohong
hi ,xiaoming
i am xiaohong, is nan
i am xiaohong , is nan , age 15
hasattr(p,'myname') 是否有myname : True
True
python
python
类定义
class animal(object): #新式类 广度优先
def __init__(self):
print('this is animal...')
def __del__(self):
print("talk end")
class dog(animal):
def talk(self):
print('dog ...talk')
class cat(animal):
def talk(self):
print('cat...talk')
d = dog()
d.talk()
c = cat()
c.talk()
'''
多态
super(父类,self).init() 调用父类的方法
子类的init 可以覆盖父类的init
静态方法
类方法
'''
def animal_talk(obj):
obj.talk()
animal_talk(d)
静态属性方法
class Dog(object):
def __init__(self,name='dog',*args,**kwargs):
self.name = name
print(name)
print(args)
print(kwargs)
print(kwargs.keys(),kwargs.values())
def eat(self,food):
print('%s eating %s ' %(self.name,food))
@staticmethod #静态方法 不能写self 跟类没有联系
# @classmethod 类方法
# @property 属性方法 就是将该方法变成属性 不能修改,删除
# 方法名.setter 在可以修改
#方法名.deleter 删除
def play():
print('playing...')
d=Dog('xiaoming',18,sex='m')
d.eat('apple')
print('---------')
d2=Dog()
d2.eat('orange')
print('----')
d3=Dog()
d3.play()