python类,了解一下

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值