新手学习python(十五)面向对象

#类名首字母都大写
#python3里面,经典类和新式类没有任何区别
#self 代表的是本类对象

class Person: #经典类
def __init__(self,name):#构造函数
self.name=name
self.nose=2 #鼻子 #属性
self.face=2 #脸
self.head=10 #脑子
self.wing=4 #翅膀
print('开始造人。。。')
def driver(self):
print('老司机开车非常稳')
self.eat() #调用类里面的函数

def fly(self):
print('%s在飞。。。'%self.name) #获取类里面的变量

def eat(self):
print('吃火锅,吃小龙虾,喝啤酒')
zs=Person('zhangsan')
print(zs.name)
zs.driver()

#类在用的时候,首先必须实例化
zlj=Person("aaa") #实例化,类加上括号就是实例化
zlj.eat()
zlj.fly()
zlj.fly()
zlj.driver()
print(zlj.wing)
print(zlj.nose)

*******************************
再举个小例子:
class Baby():
country = 'china' #类变量,公共变量

def my(self):
self.name='牛阿三'

def cry(self): #实例方法
print('wawawa')

@property
def hhh(self):
return 198

@classmethod #类方法
def xm(cls): #cls代表的就是baby
print(cls.country)
print('我是类方法')
#1.不用实例化就可以直接调用
#2.它可以通过cls使用类变量
#3.它不能调用这个类里面的其他实例方法和实例变量

@staticmethod
def xh():
print('这个是静态方法,它和一个没有写在类里面的函数一样')
#静态方法就是一个普通函数,只不过是写在类里面而已,它用不了类变量,类方法,实例变量,实例方法

print(Baby.xm())

# Baby.country ='USA' #类变量是可以直接通过类名.xxx来进行修改的

# dcg=Baby()
# dcg.country='Japan'
# print(dcg.country)

# yjt=Baby()
# print(yjt.country)
# print('dcg的内存地址。。。',id(dcg))
#
# zll=Baby('啊哈')
# print(id(zll))
 
posted @ 2018-10-31 15:14  bianbian1234  阅读(143)  评论(0编辑  收藏  举报