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())

 

posted @ 2019-04-26 09:50  遗忘天际  阅读(130)  评论(0编辑  收藏  举报