python 类的使用

用关键词 class 定义一个类如果没有指定父类,则默认object类

  1.    class Human(object)
  2.         pass

类属性

  1. class Human(object):
  2.     taisheng=True

类属性为类的属性,与类绑定,所有该类都有这种属性。

实例属性

  1. class Human(object):
  2.     def __init__(self,name)    
  3.         self.name=name
  4. human_a=Human("alan")

__init__(self,name)在调用类的时候会被调用,一般用于初始化,self代表实例本身也可以用me代替。

也可以在创建完一个实例之后再去添加实例属性,例如:

  1. class Human(object):
  2.     pass
  3. human_a=Human()
  4. human_a.name="name"
  5. print(human_a.name)

此段代码也可以给实例human_a附加实例属性name。

类方法

  1. class Human(object):
  2.     def __init__(self,name):            
  3.        self.name=name
  4.     def walk(self):
  5.         print(self.name+"is walking")
  6. human_a=Human("alan")
  7. human_a.walk()

运行结果为:alan is walking,此外,值得注意的是,self作为实例本身,必须要作为参数传入函数中,而不能被函数直接使用。

访问控制

以上的例子中name属性是可以被直接访问和修改的,如果想限制外部访问,在属性前面加上__比如__name。如果加上之后想要访问可以使用get借口:

  1. class Human(object):
  2.     def __init__(self,name):
  3.         self.__name=name
  4.     def walk(self):
  5.         print(self.__name+" is walking")
  6.     def get_name(self):
  7.         return self.__name
  8. human_a=Human("alan")
  9. print (human_a.get_name())

此段代码输出了human_a.name,如果需要修改私有的属性,可以使用set接口:

  1. class Human(object):
  2.     def __init__(self,name):
  3.         self.__name=name
  4.     def walk(self):
  5.         print(self.__name+" is walking")
  6.     def get_name(self):
  7.         return self.__name
  8.     def set_name(self,name):
  9.         self.__name=name
  10. human_a=Human("alan")
  11. print (human_a.get_name())
  12. human_a.set_name("bob")
  13. print(human_a.get_name())

运行结果分别是"alan"  "bob" set函数对human_a.__name进行了修改。其意义就在于可以限制某些属性的修改条件,比如限制name长度小于10:

  1. class Human(object):
  2.     def __init__(self,name):
  3.         self.__name=name
  4.     def walk(self):
  5.         print(self.__name+" is walking")
  6.     def get_name(self):
  7.         return self.__name
  8.     def set_name(self,name):
  9.         if(len(name)<10)
  10.             self.__name=name
  11. human_a=Human("alan")
  12. print (human_a.get_name())
  13. human_a.set_name("bob")
  14. print(human_a.get_name())

第9行的if语句就完好的利用了set接口限制了name的长度。

继承与多态

定义了一个类之后,可以定义其子类,子类拥有父类的所有属性,这就是继承。子类也可以拥有自己特有的属性,这就是多态。

  1. class Man(object):
  2.     def __init(self,name,has_wife)        
  3.         super(Man.self).__init__(name)
  4.         self.__has_wife=has_wife
  5.     def smoke(self):
  6.         print(self.get_name()+"is smoke")
super(Man.self).__init__(name)是继承的父类的初始化函数,此函数相当于父类的初始化函数。而def smoke(self)是Man特有的函数,体现了类的多态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值