# -*- coding: utf-8 -*-
"""
Created on Wed Feb 7 12:33:49 2018
@author: Administrator
"""
#############
class Car(object):#定义类
def info(self):#定义成员方法
print('this is a car')
car=Car()#实例化对象
car.info()#调用对象方法
############
#类内部调用数据成员加self,类外部调用数据成员加对象名
class A:
def __init__(self,value1=0,value2=0):#构造函数
self._value1=value1
self.__value2=value2#私有成员
def setValue(self,value1,value2):
self._value1=value1
self.__value2=value2
def show(self):
print(self._value1)
print(self.__value2)
a=A()
a._value1#访问非私有成员
a.show()#间接调用
print(a._A__value2)#访问私有成员
######################
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)
e=Employee('ding',12)#__init__接受参数
e.displayCount()
e.displayEmployee()
#####################
class Car(object):
price=10000
def __init__(self,c):
self.color=c
car1=Car('red')
car2=Car('green')
print(car1.color,Car.price)
Car.name='qq'
car1.color='yellow'
print(car1.color,Car.name)
def setSpeed(self,s):
self.speed=s
import types
car1.setSpeed=types.MethodType(setSpeed,car1)
car1.setSpeed(50)
print(car1.speed)
##############
class Root:
__total=0
def __init__(self,v):
self.__value=v
Root.__total += 1
def show(self):
print(self.__value)
print(Root.__total)
@classmethod
def classShowTotal(cls):
print(cls.__total)
@staticmethod
def staticShowToal():
print(Root.__total)
r=Root(3)
r.show()
r.classShowTotal()
r.staticShowToal()
Root.classShowTotal()
Root.staticShowToal()
Root.show(r)
###############
class Test:
def prt(self):
print(self)
print(self.__class__)
t = Test()
t.prt()
#############
#继承
class Parent: # 定义父类
parentAttr = 100
def __init__(self):
print("调用父类构造函数")
def parentMethod(self):
print('调用父类方法')
def setAttr(self, attr):
Parent.parentAttr = attr
def getAttr(self):
print("父类属性 :", Parent.parentAttr)
class Child(Parent): # 定义子类
def __init__(self):
print("调用子类构造方法")
def childMethod(self):
print('调用子类方法')
c = Child() # 实例化子类
c.childMethod() # 调用子类的方法
c.parentMethod() # 调用父类方法
c.setAttr(200) # 再次调用父类的方法 - 设置属性值
c.getAttr() # 再次调用父类的方法 - 获取属性值