類的繫結方法與property裝飾器

2022-09-10 09:57:21 字數 4601 閱讀 7177

題目:

1. 定義乙個類,產生一堆物件

2. 統計產生了多少個物件

'''思路:定義乙個計數器,每產生乙個物件,計數器加1'''

class student():

count = 0

def __init__(self, name, age):

self.name = name

self.age = age

student.count += 1

s1 = student()

print(s1.count)

s2 = student()

print(s2.count)

s3 = student()

print(s3.count)

繫結方法分為2種:

1.繫結給物件的

# class student():

# school = 'sh'

# country = 'china'

# # def __init__(self,name,age):

# self.name = name

# self.age = age

# # 繫結給物件的方法,物件來呼叫,會把自己當成第乙個引數傳到函式裡面self

# # def inner(self):

# print('%s今年%s歲了' % (self.name, self.age))

# # def func(self):

# print('%s明年%s歲了'%(self.name,self.age+1))

# # stu = student('henry',18)

# stu1 = student('jason',17)

# # # stu.func() # # stu.func(stu)

# stu1.inner() # stu1.inner(stu)

2.繫結給類的

# class mysql():

# def __init__(self,ip,port):

# self.ip = ip

# self.port = port

# # @classmethod

# def from_conf(cls):

# # cls => orancle

# # stu = mysql(settings.i, settings.port)

# stu = cls(settings.ip,settings.port)

# return stu

# #

# stu = mysql(settings.ip,settings.port)

# stu1 = stu.from_conf()

# mysql.from_conf()

# 既不繫結給類 也不繫結給物件

# class student():

# def __init__(self,name,age):

# self.name = name

# self.age = age

# self.id = self.get_id()

# # @staticmethod # 靜態方法

# def get_id():

# import uuid

# return uuid.uuid4()

# #

# stu = student('jason',18)

# print(stu.id)

# print(student.get_id())

"""

隱藏屬性的特點:

1.在類定義階段發生了形變:發生了語法上的形變_類名__屬性名

2.隱藏對內不對外

3.只有在定義階段發生形變,其他情況都不發生形變

為什麼要隱藏:

對內部的屬性或者方法做隱藏 可以更好的限制外部使用者 要想讓外部訪問 在類內部定義對外部可訪問的介面

可以達到對外部資料的嚴格控制

"""# class student():

# __school = 'sh'

# # def __init__(self,name,age):

# self.name = name

# self.age = age

# # def set_school(self,v):

# if type(v) is not str:

# print('輸入內容不合法')

# return

# self.__school = v

# # def get_school(self):

# return self.__school

# # stu = student('jason',18)

# stu.set_school(1)

# print(stu._student__school)

# print(stu.get_school())

# class student():

# __school = 'sh'

## def __init__(self,name,age):

# self.__name = name

# self.age = age

# @property

# def name(self):

# return 'name:%s' % self.__name

## @name.setter

# def name(self,v):

# if type(v) is not str:

# print('輸入內容不合法')

# return

# self.__name = v

# @name.deleter

# def name(self):

# print('不讓刪')

## stu = student('jason',18)

# # print(stu.name)

# stu.name = 123

# print(stu.name)

# del stu.name

# 小練習

# class bmi():

# def __init__(self,height,weight):

# self.height = height

# self.weight = weight

## @property

# def get_bim(self):

# return self.weight / (self.height ** 2)

## bmi = bmi(1.8,70)

# print(bmi.get_bim)

# 了解

# class student():

# __school = 'sh' # _student__school => _類名__屬性名

## def __init__(self, name, age):

# self.__name = name

# self.age = age

## def __tell_info(self): # _student__tell_info => _類名__函式名

# print('name: %s, age: %s' % (self.__name, self.age))

## def get_name(self):

# return "name:%s" % self.__name

## def set_name(self, v):

# if type(v) is not str:

# print('資料型別不合法')

# # if isinstance(v, str):

# return

# self.__name = v

## def del_name(self):

# print('不讓刪')

## # 了解

# name = property(get_name, set_name, del_name)

python類的繫結方法與非繫結方法

一 繫結方法 首先我們明確乙個知識點,凡是類中的方法或函式,預設情況下都是繫結給物件使用的。下面,我們通過例項,來慢慢解析繫結方法的應用。class people def init self,name,age self.name name self.age age deftalk self pass...

python基礎 類的繫結方法與非繫結方法(詳解)

三 類的繫結方法 四 非繫結方法 python中,類中的方法有兩類,繫結方法和非繫結方法,今天就來研究一下。參考博文 1 繫結方法的定義繫結給誰,就由誰來呼叫,誰來呼叫就把它當作乙個引數自動傳入。2 物件的繫結方法 在學習和工作中,我們最常用的就是物件的繫結方法,在python中,凡是類中的方法或函...

類和物件的繫結方法與非繫結方法

類的定義方法大致可以分為兩類 繫結方法和非繫結方法 其中繫結方法又可以分為繫結到物件的方法和繫結到類的方法 class person def init self,name,age self.name name self.age age defprint name self print self.na...