码迷,mamicode.com
首页 > 编程语言 > 详细

Python进阶学习之面向对象

时间:2019-10-07 19:49:17      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:封装   函数   ++   count()   ota   副本   secret   创建   输出   

面向对象

? python也有面向对象的编程,它与C++中的类有点相似。它也只是运算符重载,继承。

class Test:
   num=0
   def __init__(self):
      # self.num=9 #print结果是9
      Test.num=10  #print结果是10
t=Test()
print(t.num)

但是在python中类中的变量全是共有的,可以通过Test.num来进行访问;在类中,初始化的构造函数并不是以Test()[Test()方法是C++中的构造函数]这种方式来声明,而是以__init__()函数来声明。构造函数中self代表的是累的实例,并非是类,类的方法与普通函数只有一个特殊的区别,就是在类中的方法必须要有第一个参数名称,按照惯例,他的名称是self。

class Employee:  #所有员工的基类
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1

   def displayCount(self):
      print("Total Employee %d" % Employee.empCount)

   def displayEmployee(self):
      print("Name : ", self.name, ", Salary: ", self.salary)

emp1 = Employee("Zara", 2000)  #创建 Employee 类的第一个对象
emp2 = Employee("Manni", 5000)#创建 Employee 类的第二个对象
emp1.displayEmployee()
emp2.displayEmployee()
print("Total Employee %d" % Employee.empCount)
Name :  Zara , Salary:  2000
Name :  Manni , Salary:  5000
Total Employee 2

上述代码的输出中,大家可能对于“Total Employee 2”比较有疑惑,这是因为empCount是类属性,而不是对象属性。类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++、Java中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类对象和实例对象访问。上述代码中的name和salary都是实例属性,每一个对象都会拥有一个自己的name和salary,而且实例属性也可以只在在类外通过“实例对象.实例属性"来进行自定义设置,但是这种一般不建议,为了更好的封装性,还是建议将所有的实例属性放置在类中。

私有属性

class JustCounter:
   __secretCount = 0  # 私有变量
   publicCount = 0  # 公开变量

   def count(self):
      self.__secretCount += 1
      self.publicCount += 1
      print(self.__secretCount)
      
counter = JustCounter()
counter.count()
counter.count()
print(counter.publicCount)
# print(counter.__secretCount)#错误,实例不能访问私有变量
print(counter._JustCounter__secretCount)
 #可以使用 object._className__attrName访问属性

私有属性是不可以在类外进行访问的,若需访问,则需要通过代码中的方法进行访问。

Python进阶学习之面向对象

标签:封装   函数   ++   count()   ota   副本   secret   创建   输出   

原文地址:https://www.cnblogs.com/SmallBlackEgg/p/11631712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!