Python面向对象
参考https://www.liaoxuefeng.com/wiki/1016959663602400/1017495723838528
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
创建类
class Animal: #__init__ 类的构造方法,在类实例化时执行 def __init__(self,name,age) #self指实例变量本身,实例化时不需要对self进行赋值,Python解释权将自动把实例变量传入self self.name = name self.age = age def sit(self): #类的方法 print(self.name + " is now sitting")
实例化(创建对象)
dog = Animal('xiaohua',2) #创建实例通过类名()实现
print(dog.name) output:xiaohua #实例变量
dog.sit() output:xiaohua is now sitting #实例方法
访问限制
Python中允许类外部修改实例变量的值
class Car():
def __init__(self,make,model,year,odometer_reading):
self.make = make
self.model = model
self.year = year
self.odometer_reading = odometer_reading #属性的默认值
def get_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name
def get_odometer_reading(self):
print("This car has " + str(self.odometer_reading) + 'miles on it')
my_car = Car('audi','a4','2018',200)
my_car.odometer_reading = 300 ##直接在类外部访问属性 并且修改属性值
print(my_car.get_name())
my_car.get_odometer_reading()
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__
class Car():
def __init__(self,make,model,year,odometer_reading):
self.make = make
self.model = model
self.year = year
self.__odometer_reading = odometer_reading #属性的默认值
def get_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name
def get_odometer_reading(self):
print("This car has " + str(self.odometer_reading) + 'miles on it')
my_car = Car('audi','a4','2018',200)
print(my_car.__odometer_reading)
output:AttributeError: 'Car' object has no attribute '__odometer_reading'
继承
class Animal:
def __init__(self,name,age)
self.name = name
self.age = age
def sit(self):
print(self.name + " is now sitting")
class Dog(Animal): #继承Animal类,获得了父类的属性和方法
def run(self):
print(self.name + "is now running")
def sit(self):#重写父类方法
print(self.name + "is now sitting.my age is" + str(self.age) )
dog = Dog("xiaohua",3)
dog.sit() #xiaohua is now sitting.my age is 3。
2020-03-18 17:02

浙公网安备 33010602011771号