python基础 22面向对象
#面向对象对象解决了程序的可扩展性,可控性差
#自定义类
# def 函数名():
# pass
# class 类名:
# 属性='a'
# print(类名.属性)
class Person:
country='China' #类属性 静态属性
def __init__(self,*args): #初始化方法,self是对象,必传参数
#self就是一个可以存储很多属性的大字典
self.name=args[0]
self.hp=args[1]
self.aggr=args[2]
self.sex=args[3]
def walk(self,n): #方法,一般情况下必须传self参数,后面还可以传其他参数
print('%s走走走,走了%s步'%(self.name,n))
print(Person.country)
alex = Person('狗剩儿', 100, 1, '不详') #对象=类名+() #实例化
# print(alex.__dict__) #查看所有方法
print(Person.__dict__)
# Person.walk(alex)
alex.walk(50)
alex.age=83
print(alex.__dict__)
#调用方法 类名.方法名(对象名)
#过程:类名() 首先会创造一个对象,创建了一个self变量
#调用init方法,类名括号里的参数数会被这里接收
#执行init方法
#返回self
#对象能做的事:#查看属性
#调用方法
#类名能做的事: #实例化
#调用静态属性
from math import pi class Circle: def __init__(self,r): self.r=r def area(self): return self.r**2*pi def primeter(self): return 2*pi*self.r #圆环类 class Ring: def __init__(self,outside_r,inside_r): self.outside_c=Circle(outside_r) self.inside_c=Circle(inside_r) def ring_area(self): return self.outside_c.area()-self.inside_c.area() def ring_primeter(self): return self.outside_c.primeter()-self.inside_c.primeter() r1=Ring(20,10) print(r1.ring_area(),r1.ring_primeter())