1

Day 22 面向对象知识.

https://www.cnblogs.com/bigberg/p/7252349.html  #类方法,静态方法, 属性方法。

类有两种作用:属性引用 和实例化.
属性引用(类名.属性)
class person()
  role=“perosn” 人的角色属性都是人
  def walk(self):
    print ("person is walking")
print (Person.role) #查看人的role属性
print (person.walk) #引用人的走路方法,注意这里不是在调用.

实例化: 类名加 括号就是实例化,会自动触发__init__函数.的运行
可以用他来为每个实例指定自己的特征.
class Person:
    role ='person' #人的角色属性都是人
    def __init__(self,name ):
        self.name =name 
    def walk(self):
        print("person is walking")
print(Person.role)# 查看人的role属性 
print(Person.walk)#引用人的走路方法,注意这里不是在调用.   打印结果<function Person.walk at 0x028CEA08>
print(person.__dirt__)类的字典属性:
{'__module__': '__main__', 'role': 'person', '__init__': <function Person.__init__ at 0x0021D6A8>,
'walk': <function Person.walk at 0x007EEA08>, '__dict__': <attribute '__dict__' of 'Person' objects>,
'__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}
对象的作用:属性的引用
一:我们定义的类的属性到底存到哪里了?有两种方式查看
dir(类名):查出的是一个名字列表
类名.__dict__:查出的是一个字典,key为属性名,value为属性值

二:特殊的类属性
类名.__name__# 类的名字(字符串)
类名.__doc__# 类的文档字符串
类名.__base__# 类的第一个父类(在讲继承时会讲)
类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)
类名.__dict__# 类的字典属性
类名.__module__# 类定义所在的模块
类名.__class__# 实例对应的类(仅新式类中)


人打狗,狗咬人的题目


class Person :
role ='人' 静态方法
def __init__(self,name,sex,aggr,hp):内置方法.
self.name = name
self.sex =sex
self.aggr =aggr
self.hp = hp
def attack(self,dog): 自定义方法.
print('%s 打了 %s'%(self.name,dog.name))
dog.hp =dog.hp- self.aggr
class Dog :
def __init__(self,name,kind,aggr,hp):
self.name =name
self.kind =kind
self.aggr =aggr
self.hp = hp
def bite (self,person):
print('%s 咬了 %s'%(self.name,person.name))
person.hp -=self.aggr
hei =Dog('小黑','teddy',260,10000) #实例化过程.
alex =Person('alex','female',1,250 )
alex.attack(hei)#Person.attack(alex,hei)
print(hei.hp) #
hei.bite(alex)
print(alex.hp)

通过面向对象求圆的面积和周长


from math import pi
class Cirle :
def __init__(self,r):
self.r = r
def area(self):
return pi*self.r**2
def zhouchang(self):
return 2*pi*self.r

c1 = Cirle(5)
print(c1.r)
print(c1.area())
print(c1.zhouchang())
 答案:

5
78.53981633974483
31.41592653589793


圆周的问题.
# from math import pi
# class Cirle :
# def __init__(self,r):
# self.r = r
# def area(self):
# return pi*self.r**2
# def zhouchang(self):
# return 2*pi*self.r
#
# c1 = Cirle(5)
# print(c1.r)
# print(c1.area())
# print(c1.zhouchang())


爬山砍柴题目.


class Person :
def __init__(self,name,sex,age):
self.name =name
self.sex =sex
self.age =age
def clim(self):
print('%s,%s,%s岁,去爬山'%(self.name,self.sex,self.age))
def drive(self):
print('%s,%s,%s岁,开车去东北'%(self.name,self.sex,self.age))
def massage(self):
print('%s,%s,%s岁,massage'%(self.name,self.sex,self.age))
xiaoming = Person("小明",'男','10岁')
xiaoming.drive()
xiaoming.clim()
xiaoming.massage()

laozhang = Person('老张','男','90岁')
laozhang.drive()
laozhang.clim()
laozhang.massage()

laowang =Person('老王','男','70岁')
laowang.drive()
laowang.clim()
laowang.massage()

正方形的面积

class squre:
    def __init__(self,line):
self.line = line

def mianji(self):
return self.line**2

obj=squre(6)
print(obj.line)
print(obj.mianji())
posted @ 2018-03-05 18:36  萌哥-爱学习  阅读(333)  评论(0编辑  收藏  举报