面向对象python
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象做为程序的基本单元,一个对象包含了数据和操做数据的函数编程
class car: #静态字段,类属性 cars='车的种类之一' def __init__(self,name): #动态字段,实例属性 self.name=name car1=car('宝马') print(car1.name) print(car.cars) print(car1.cars)
定义1个对象:class xxx:函数
实例化1个对象:def __init__(self,value) spa
__init__ 是初始化的意思.net
定义car(车)这个类,而宝马这个实例对象拥有 name属性设计
经过字典,一次性取出实例对象全部属性 __dict__code
class People: def __init__(self,name,sex,number,age): self.name=name self.sex=sex self.number=number self.age=age p1=People('SBharmel','man',1350023,16) print(p1.__dict__) #经过字典,一次性取出,对象全部属性 #输出结果: #{'name': 'SBharmel', 'number': 1350023, 'sex': 'man', 'age': 16}
从属关系对象
cars 属于 car 类 类不能访问动态字段get
name 属于 car1 对象 对象能够访问动态字段和静态字段it
只有是从属关系,才能用 .xxx 方法获取
因此能够写 car.cars #获取静态字段 car1.name #获取动态字段
若是写成 car.name 则会报错
不能写的缘由:
1.从属关系不一样
2. 车这个类可能拥有多个类型如 宝马, 奔驰 他们两个的属性不同,如价格,车速不一样
#可是对象能够获取 静态字段 car1.cars
由于 car1 也属于 这个类 (car)
class car: def __init__(self,name,speed,price): self.name=name self.speed=speed self.price=price car1=car('宝马','130km/h','100w') car2=car('奔驰','140km/h','80w') print(car1.name) #正确 print(car2.price) #正确 print(car.speed) #报错 ''' Traceback (most recent call last): File "E:\workspace\day4\backend\class.py", line 23, in <module> print(car.speed) AttributeError: type object 'car' has no attribute 'speed' '''
静态字段和动态字段
类建立的字段叫作 静态字段 cars
.sefl 建立的字段叫作 动态字段 name
静态方法(@staticmethod)和动态方法以及特性( property)
@staticmethod #构造的函数()里面不传参数self
def foo()
@property #构造的函数 ()里面要传参数 self,调用不用写()
hb.bar #仅为实例对象的特性,类调用无内容
class Province: def __init__(self,name): self.name=name #动态方法 def meeting(self): print(self.name+'正在开运动会') #静态方法 @staticmethod def foo(): print('每一个省要坚持环保') #特性 @property def bar(self): print('someting') hb=Province('湖北') hb.meeting() Province.foo() hb.bar
。