কোনও বস্তুর বৈশিষ্ট্য তালিকাভুক্ত করুন


329

কোনও শ্রেণীর উদাহরণে বিদ্যমান বৈশিষ্ট্যগুলির তালিকা দখল করার কোনও উপায় আছে কি?

class new_class():
    def __init__(self, number):
        self.multi = int(number) * 2
        self.str = str(number)

a = new_class(2)
print(', '.join(a.SOMETHING))

পছন্দসই ফলাফলটি হ'ল "মাল্টি, আরআর" আউটপুট হবে। আমি এটি একটি স্ক্রিপ্টের বিভিন্ন অংশ থেকে বর্তমান বৈশিষ্ট্যগুলি দেখতে চাই।


75
কার্যত পাইথনের প্রত্যেকে নিজের ক্লাসের নাম দেয় NewClass। আপনি যদি নামকরণের মতো একটি কনভেনশন ব্যবহার করেন তবে আপনি জনগণের প্রত্যাশাকে অস্বীকার করতে পারেন new_class
মাইক গ্রাহাম

যদিও এটি মানব-ইন্টারেক্টিভ এবং help()প্রগ্রেটিকভাবে ব্যবহার করা যায় না, ফাংশন ক্লাস, ফাংশন, বিল্টিন, মডিউল এবং আরও অনেক কিছু সম্পর্কে তথ্য পেতে সহায়তা করে
yppillai


উত্তরগুলির কোনওটিকেই 'গৃহীত' হিসাবে চিহ্নিত করা হচ্ছে না কেন?
pfabri

উত্তর:


294
>>> class new_class():
...   def __init__(self, number):
...     self.multi = int(number) * 2
...     self.str = str(number)
... 
>>> a = new_class(2)
>>> a.__dict__
{'multi': 4, 'str': '2'}
>>> a.__dict__.keys()
dict_keys(['multi', 'str'])

আপনি প্রিন্ট সহায়কও পেতে পারেন ।


29
ডিক ব্যবহারের বিষয়টি সবেমাত্র r / পাইথনের উপরে প্রদর্শিত হয়েছিল। কেউ দেখিয়েছেন যে ভার্স (ক) একটি .__ ডিক__ এর সমতুল্য
ডেভিড

5
যদি কেউ ভাবছেন, এটি পাইথন ২.7-তেও কাজ করে
বেন মরদকেই

8
সুনির্দিষ্ট হওয়ার জন্য, pprint.pprint(a.__dict__)বৈশিষ্ট্যগুলিতে একটি সুন্দর-মুদ্রণ করে।
smci

1
অবশ্যই pprintএটি পাইথন ২.6 এ কাজ করে না।
জন গ্রিন

3
মনে রাখবেন এটি কেবল ব্যবহারকারী-সংজ্ঞায়িত শ্রেণীর জন্য কাজ করে, অন্তর্নির্মিত বা এক্সটেনশান ধরণের জন্য নয়।
ivan_pozdeev

173
dir(instance)
# or (same value)
instance.__dir__()
# or
instance.__dict__

তারপরে আপনি কোন ধরণের সাথে type()বা এটির কোনও পদ্ধতি রয়েছে তা পরীক্ষা করতে পারেন callable()


দির ওভারলোডেড অ্যাট্রিবিউট
গেট

দির (উদাহরণস্বরূপ) এমন অনেকগুলি বিষয় তালিকাভুক্ত করে যা আপনার সম্ভবত আগ্রহী নয়
jciloa

এটিই কেবলমাত্র ফাংশন যা আমাকে bostonস্কলেয়ার্ন থেকে ডেটাসেটে সমস্ত উপলব্ধ বৈশিষ্ট্যগুলি পেয়েছিল - __dict__খালি ছিল, যখন বাস্তবে 5 টি উপলব্ধ বৈশিষ্ট্য ছিল
Coruscate5

72

vars(obj) কোনও বস্তুর বৈশিষ্ট্যগুলি প্রদান করে।


52

পূর্ববর্তী সমস্ত উত্তর সঠিক, আপনি যা জিজ্ঞাসা করছেন তার জন্য আপনার কাছে তিনটি বিকল্প রয়েছে

  1. dir()

  2. vars()

  3. __dict__

>>> dir(a)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'multi', 'str']
>>> vars(a)
{'multi': 4, 'str': '2'}
>>> a.__dict__
{'multi': 4, 'str': '2'}

1
vars(foo)রিটার্নfoo.__dict__
বোরিস

32
>>> ', '.join(i for i in dir(a) if not i.startswith('__'))
'multi, str'

এটি অবশ্যই শ্রেণীর সংজ্ঞায় কোনও পদ্ধতি বা বৈশিষ্ট্য মুদ্রণ করবে। আপনি এটিকে পরিবর্তন i.startwith('__')করে "ব্যক্তিগত" পদ্ধতিগুলি বাদ দিতে পারেনi.startwith('_')


24

পরিদর্শন মডিউল একটি বস্তু পরিদর্শন করার সহজ উপায় প্রদান:

পরিদর্শন মডিউলটি মডিউল, শ্রেণি, পদ্ধতি, ফাংশন, ট্রেসব্যাকস, ফ্রেম অবজেক্টস এবং কোড অবজেক্টের মতো লাইভ অবজেক্ট সম্পর্কে তথ্য পেতে সহায়তা করতে বেশ কয়েকটি দরকারী ফাংশন সরবরাহ করে।


getmembers()আপনি ব্যবহার করে আপনার শ্রেণীর সমস্ত বৈশিষ্ট্য, তাদের মান সহ দেখতে পারেন। ব্যক্তিগত বা সুরক্ষিত গুণাবলী ব্যবহার বাদ দিতে .startswith('_')। বাদ দেওয়ার পদ্ধতি বা ফাংশন ব্যবহার inspect.ismethod()বা inspect.isfunction()

import inspect


class NewClass(object):
    def __init__(self, number):
        self.multi = int(number) * 2
        self.str = str(number)

    def func_1(self):
        pass


a = NewClass(2)

for i in inspect.getmembers(a):
    # Ignores anything starting with underscore 
    # (that is, private and protected attributes)
    if not i[0].startswith('_'):
        # Ignores methods
        if not inspect.ismethod(i[1]):
            print(i)

নোট যা ismethod()দ্বিতীয় উপাদানটিতে ব্যবহৃত হয়i প্রথমটি কেবল স্ট্রিং (এর নাম)।

অফটপিক: শ্রেণীর নামের জন্য ক্যামেলকেস ব্যবহার করুন ।


13

আপনি dir(your_object)বৈশিষ্ট্যগুলি পেতে এবং ব্যবহার করতে পারেনgetattr(your_object, your_object_attr) পেতে এবং মানগুলি পেতে

ব্যবহার:

for att in dir(your_object):
    print (att, getattr(your_object,att))

এটি বিশেষত কার্যকর যদি আপনার অবজেক্টটিতে __ডিক্ট__ না থাকে। যদি এটি না হয় তবে আপনি var (your_object) ব্যবহার করে দেখতেও পারেন


11

এটি প্রায়শই উল্লেখ করা হয় যে আপনার ব্যবহার করা উচিত এমন একটি বৈশিষ্ট্যের সম্পূর্ণ তালিকা তালিকাবদ্ধ করতে dir()। তবে দ্রষ্টব্য যে জনপ্রিয় বিশ্বাসের বিপরীতে সমস্ত বৈশিষ্ট্য dir()বের হয় না । উদাহরণস্বরূপ আপনি খেয়াল করতে পারেন যে এটি কোনও শ্রেণীর তালিকা থেকে নিখোঁজ হতে পারে যদিও আপনি নিজে ক্লাস থেকেই এটি অ্যাক্সেস করতে পারেন। ( পাইথন 2 , পাইথন 3 ) এর ডক থেকে :__name__dir()dir()

যেহেতু দির () প্রাথমিকভাবে ইন্টারেক্টিভ প্রম্পটে ব্যবহারের সুবিধার্থ হিসাবে সরবরাহ করা হয়, এটি নামগুলির একটি দৃ rig় বা ধারাবাহিকভাবে সংজ্ঞায়িত সেট সরবরাহ করার চেষ্টা করার চেয়ে নামের একটি আকর্ষণীয় সেট সরবরাহ করার চেষ্টা করে এবং এর বিশদ আচরণ প্রকাশের বাইরেও পরিবর্তিত হতে পারে। উদাহরণস্বরূপ, মেটাক্লাস বৈশিষ্ট্যগুলি ফলাফলের তালিকায় থাকে না যখন যুক্তিটি কোনও শ্রেণি হয়।

নিম্নলিখিত মত একটি ফাংশন আরও সম্পূর্ণ হতে থাকে, যদিও তালিকাটি ফিরে আসায় পদ্ধতিটি dir()বাস্তবায়ন __dir__(), বা কাস্টমাইজ করে __getattr__()বা __getattribute__()ক্লাস বা এর কোনও পিতা-মাতার সাথে যুক্ত সহ অনেকগুলি কারণ দ্বারা প্রভাবিত হতে পারে বলে সম্পূর্ণতার কোনও গ্যারান্টি নেই । আরও তথ্যের জন্য প্রদত্ত লিঙ্কগুলি দেখুন।

def dirmore(instance):
    visible = dir(instance)
    visible += [a for a in set(dir(type)).difference(visible)
                if hasattr(instance, a)]
    return sorted(visible)

9

আপনি এটি কি জন্য চান? আপনার সঠিক উদ্দেশ্যটি না জেনে আপনার সেরা উত্তর পাওয়া কঠিন হতে পারে।

  • আপনি যদি নির্দিষ্টভাবে নিজের শ্রেণীর কোনও উদাহরণ প্রদর্শন করতে চান তবে ম্যানুয়ালি এটি করা প্রায়শই ভাল always এটিতে আপনি যা চান ঠিক তা অন্তর্ভুক্ত করবেন এবং যা চান না তা অন্তর্ভুক্ত করবেন না এবং আদেশটি পূর্বাভাসযোগ্য হবে।

    আপনি যদি কোনও শ্রেণীর বিষয়বস্তু প্রদর্শন করার উপায় খুঁজছেন, তবে আপনি যে বৈশিষ্ট্যগুলি বিবেচনা করছেন সেটিকে ম্যানুয়ালি বিন্যাস করুন এবং এটি আপনার শ্রেণীর জন্য __str__বা __repr__পদ্ধতি হিসাবে সরবরাহ করুন ।

  • কোনও বস্তুর কীভাবে এটি কাজ করে তা বোঝার জন্য কী কী পদ্ধতি এবং এ জাতীয় উপস্থিতি সম্পর্কে আপনি যদি জানতে চান তবে ব্যবহার করুন helphelp(a)এর ডকাস্ট্রিংয়ের উপর ভিত্তি করে আপনাকে অবজেক্টের ক্লাস সম্পর্কে ফর্ম্যাট করা আউটপুট প্রদর্শন করবে।

  • dirক্রমগতভাবে কোনও বস্তুর সমস্ত বৈশিষ্ট্য পাওয়ার জন্য বিদ্যমান। (অ্যাক্সেস __dict__এমন কিছু কাজ করে যা আমি একইভাবে গ্রুপ করব তবে আমি নিজে ব্যবহার করব না)) তবে এটিতে আপনার পছন্দসই জিনিসগুলি অন্তর্ভুক্ত নাও হতে পারে এবং এতে আপনার না চাওয়া জিনিসগুলিও অন্তর্ভুক্ত থাকতে পারে। এটি অবিশ্বস্ত এবং লোকেরা মনে করে যে তারা তাদের চেয়ে অনেক বেশি বার এটি চায়।

  • কিছুটা অর্থোথোনাল নোটে, বর্তমানে পাইথন 3-এর পক্ষে খুব কম সমর্থন রয়েছে। আপনি যদি সত্যিকারের সফ্টওয়্যার লেখার বিষয়ে আগ্রহী হন তবে আপনি তৃতীয় পক্ষের উপাদান যেমন নম্পী, এলএক্সএমএল, টুইস্টেড, পিআইএল, বা এমন অনেকগুলি ওয়েব ফ্রেমওয়ার্ক চাইবেন যা পাইথন 3 সমর্থন করে না এবং খুব শীঘ্রই কোনও সময়ের পরিকল্পনা নেই। 2.6 এবং 3.x শাখার মধ্যে পার্থক্যগুলি ছোট, তবে গ্রন্থাগারের সহায়তায় পার্থক্য বিশাল।


4
আমি মাত্র পাঁচ বছর পরে (এখন) এটি উল্লেখ করতে চাই, আমি বিশ্বাস করি যে সমস্ত তৃতীয় পক্ষের মডিউলগুলি আপনি উল্লেখ করেছেন যে পাইথন 3 সমর্থন করে। সূত্র: python3wos.appspot.com
pzkpfw

8

এটি করার একাধিক উপায় রয়েছে:

#! /usr/bin/env python3
#
# This demonstrates how to pick the attiributes of an object

class C(object) :

  def __init__ (self, name="q" ):
    self.q = name
    self.m = "y?"

c = C()

print ( dir(c) )

রান করার সময়, এই কোডটি উত্পাদন করে:

jeffs@jeff-desktop:~/skyset$ python3 attributes.py 
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__',      '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'm', 'q']

jeffs@jeff-desktop:~/skyset$

2
কেন এই উত্তরকে নিম্নমান দেওয়া হয়েছে? ডিবাগিং উদ্দেশ্যে, dir বেশ ভাল কাজ করে!
ডুনাটোটাটোস

বেশ পাইথন ২.7.x এর সাথে কাজ করে। ঠিক আমি যা চেয়েছিলাম
ডেভিডসন লিমা

7

অনুগ্রহ করে পাইথন শেল স্ক্রিপ্টটি দেখুন যা ক্রমানুসারে কার্যকর করা হয়েছে, এখানে আপনি কমা দ্বারা পৃথক স্ট্রিং বিন্যাসে একটি শ্রেণীর বৈশিষ্ট্য পাবেন।

>>> class new_class():
...     def __init__(self, number):
...         self.multi = int(number)*2
...         self.str = str(number)
... 
>>> a = new_class(4)
>>> ",".join(a.__dict__.keys())
'str,multi'<br/>

আমি পাইথন ৩.৪ ব্যবহার করছি


এবং আপনি যদি চান তবে তালিকাটি কেবলমাত্র ব্যবহার করতে পারে a.__dict__.keys()। তবে আপনি যদি জানতে চান যে কোনও বস্তুর একটি নির্দিষ্ট বৈশিষ্ট্য আপনি ব্যবহার করতে পারেন কিনা hasattr
berna1111

4

এই উত্তরগুলির পাশাপাশি, আমি কোনও মূল্যের পুরো কাঠামোটি বানানোর জন্য একটি ফাংশন (পাইথন 3) অন্তর্ভুক্ত করব। এটি dirসম্পত্তির নামের সম্পূর্ণ তালিকা স্থাপন করতে ব্যবহার করে, getattrএবং প্রতিটি নামের সাথে ব্যবহার করে। এটি মানটির প্রতিটি সদস্যের প্রকার প্রদর্শন করে এবং যখন সম্ভব হয় তখন পুরো সদস্যকেও প্রদর্শন করে:

import json

def get_info(obj):

  type_name = type(obj).__name__
  print('Value is of type {}!'.format(type_name))
  prop_names = dir(obj)

  for prop_name in prop_names:
    prop_val = getattr(obj, prop_name)
    prop_val_type_name = type(prop_val).__name__
    print('{} has property "{}" of type "{}"'.format(type_name, prop_name, prop_val_type_name))

    try:
      val_as_str = json.dumps([ prop_val ], indent=2)[1:-1]
      print('  Here\'s the {} value: {}'.format(prop_name, val_as_str))
    except:
      pass

এখন নিম্নলিখিত যে কোনওটির অন্তর্দৃষ্টি দেওয়া উচিত:

get_info(None)
get_info('hello')

import numpy
get_info(numpy)
# ... etc.

বাহ, এটি একটি রত্ন!
pfabri

হ্যাঁ এটি একটি জীবনদাতা ছিল। এটি কেন আমি সহজেই এই তালিকাগুলি আনপ্যাক করতে পারিনি এবং পর্যাপ্ত ধরণের "টিপল" ধরণের সম্পত্তি " স্লট " রয়েছে তা নিশ্চিত করতে পারিনি এখানে স্লটগুলির মান এখানে রয়েছে : ["এনএসনাম", "হোস্টমাস্টার", "সিরিয়াল", "রিফ্রেশ", "পুনরায় চেষ্টা করুন", "মেয়াদ শেষ", "মিন্টল", "টিটিএল"]
মিক আর

3

কোনও বস্তুর বৈশিষ্ট্য পান

class new_class():
    def __init__(self, number):
    self.multi = int(number) * 2
    self.str = str(number)

new_object = new_class(2)                
print(dir(new_object))                   #total list attributes of new_object
attr_value = new_object.__dict__         
print(attr_value)                        #Dictionary of attribute and value for new_class                   

for attr in attr_value:                  #attributes on  new_class
    print(attr)

আউটপুট

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__','__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'multi', 'str']

{'multi': 4, 'str': '2'}

multi
str

1

যেমন ব্যবহারের আগে লিখিত হিসাবে obj.__dict__সাধারণ কেসগুলি পরিচালনা করতে পারে তবে কিছু শ্রেণীর __dict__বৈশিষ্ট্য এবং ব্যবহার নেই__slots__ (বেশিরভাগ স্মৃতিশক্তির জন্য)।

এটি করার আরও দৃ res়তার সাথে উদাহরণ হিসাবে:

class A(object):
    __slots__ = ('x', 'y', )
    def __init__(self, x, y):
        self.x = x
        self.y = y


class B(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y


def get_object_attrs(obj):
    try:
        return obj.__dict__
    except AttributeError:
        return {attr: getattr(obj, attr) for attr in obj.__slots__}


a = A(1,2)
b = B(1,2)
assert not hasattr(a, '__dict__')

print(get_object_attrs(a))
print(get_object_attrs(b))

এই কোডের আউটপুট:

{'x': 1, 'y': 2}
{'x': 1, 'y': 2}

দ্রষ্টব্য 1:
পাইথন একটি গতিশীল ভাষা এবং এটি এই কোডটি কিছু ক্ষেত্রে মিস করতে পারে বলে আপনি যে শ্রেণিগুলি থেকে বৈশিষ্ট্যগুলি অর্জন করার চেষ্টা করছেন তা জেনে রাখা ভাল।

দ্রষ্টব্য 2:
এই কোডটি কেবল উদাহরণের ভেরিয়েবলগুলি বোঝায় যার অর্থ শ্রেণীর ভেরিয়েবল সরবরাহ করা হয় না। উদাহরণ স্বরূপ:

class A(object):
    url = 'http://stackoverflow.com'
    def __init__(self, path):
        self.path = path

print(A('/questions').__dict__)

কোড আউটপুট:

{'path': '/questions'}

এই কোডটি urlশ্রেণীর বৈশিষ্ট্য মুদ্রণ করে না এবং পছন্দসই শ্রেণীর বৈশিষ্ট্যগুলি বাদ দিতে পারে।
কখনও কখনও আমরা ভাবতে পারি যে কোনও বৈশিষ্ট্য একটি উদাহরণ সদস্য তবে এটি এটি নয় এবং এই উদাহরণটি ব্যবহার করে দেখানো হবে না।


2
একটি ক্লাস থাকতে পারে __dict__ এবং __slots__ তাই আপনি সম্ভবত কেবল ডিকের চেয়ে উভয়ই চেষ্টা করতে চান।
সিজেড

1
  • ব্যবহার করা __dict__বা vars কাজ করে না কারণ এটি মিস হয় __slots__
  • ব্যবহার করে __dict__এবং __slots__ কাজ করে না কারণ এটি __slots__বেস ক্লাসগুলি থেকে বাদ পড়ে।
  • ব্যবহার করা কার্যকর dir হয় না কারণ এটিতে শ্রেণীর বৈশিষ্ট্যগুলি যেমন পদ্ধতি বা বৈশিষ্ট্যগুলি পাশাপাশি অবজেক্ট বৈশিষ্ট্যগুলিও অন্তর্ভুক্ত থাকে।
  • ব্যবহার varsকরা সমান সমান __dict__

এটি আমার কাছে সেরা:

from typing import Dict

def get_attrs( x : object ) -> Dict[str, object]:
    mro      = type( x ).mro()
    attrs    = { }
    has_dict = False
    sentinel = object()

    for klass in mro:
        for slot in getattr( klass, "__slots__", () ):
            v = getattr( x, slot, sentinel )

            if v is sentinel:
                continue

            if slot == "__dict__":
                assert not has_dict, "Multiple __dicts__?"
                attrs.update( v )
                has_dict = True
            else:
                attrs[slot] = v

    if not has_dict:
        attrs.update( getattr( x, "__dict__", { } ) )

    return attrs

আসুন আমরা এই ফাংশনটি স্পোম সরল শ্রেণিতে প্রয়োগ করি: শ্রেণি সি: Def __init __ (স্ব): মুদ্রণ ("তৈরি") i = 42 কেন আপনার কোড এই জাতীয় শ্রেণীর জন্য খালি তালিকা দেয়? (আমি বলতে চাচ্ছি যদি ণ = সি () তারপর get_attrs (O) খালি) এ ছাড়া get_attrs জন্য করেছিলাম ( "mystr")
জিইডি

0
attributes_list = [attribute for attribute in dir(obj) if attribute[0].islower()]

এটি ক্যাপিটাল লেটার বা একক আন্ডারস্কোর দিয়ে শুরু করে শ্রেণীর বৈশিষ্ট্যগুলির নামের সাথে কাজ করে না।
fviktor

0

অনুগ্রহ করে নিম্নলিখিত পাইথন শেল স্ক্রিপ্টিং এক্সিকিউশনটি দেখুন, এটি শ্রেণীর তৈরি থেকে উদাহরণের ক্ষেত্রের নামগুলি বের করার সমাধান দেয়।

>>> class Details:
...       def __init__(self,name,age):
...           self.name=name
...           self.age =age
...       def show_details(self):
...           if self.name:
...              print "Name : ",self.name
...           else:
...              print "Name : ","_"
...           if self.age:
...              if self.age>0:
...                 print "Age  : ",self.age
...              else:
...                 print "Age can't be -ve"
...           else:
...              print "Age  : ","_"
... 
>>> my_details = Details("Rishikesh",24)
>>> 
>>> print my_details
<__main__.Details instance at 0x10e2e77e8>
>>> 
>>> print my_details.name
Rishikesh
>>> print my_details.age
24
>>> 
>>> my_details.show_details()
Name :  Rishikesh
Age  :  24
>>> 
>>> person1 = Details("",34)
>>> person1.name
''
>>> person1.age
34
>>> person1.show_details
<bound method Details.show_details of <__main__.Details instance at 0x10e2e7758>>
>>> 
>>> person1.show_details()
Name :  _
Age  :  34
>>>
>>> person2 = Details("Rob Pike",0)
>>> person2.name
'Rob Pike'
>>> 
>>> person2.age
0
>>> 
>>> person2.show_details()
Name :  Rob Pike
Age  :  _
>>> 
>>> person3 = Details("Rob Pike",-45)
>>> 
>>> person3.name
'Rob Pike'
>>> 
>>> person3.age
-45
>>> 
>>> person3.show_details()
Name :  Rob Pike
Age can't be -ve
>>>
>>> person3.__dict__
{'age': -45, 'name': 'Rob Pike'}
>>>
>>> person3.__dict__.keys()
['age', 'name']
>>>
>>> person3.__dict__.values()
[-45, 'Rob Pike']
>>>

আমরা প্রতিটি attributes.visit এর callablilty যাচাই করতে পারে stackoverflow.com/questions/1398022/...
hygull

-4

__attr__ উদাহরণের বৈশিষ্ট্যের তালিকা দেয়।

>>> import requests
>>> r=requests.get('http://www.google.com')
>>> r.__attrs__
['_content', 'status_code', 'headers', 'url', 'history', 'encoding', 'reason', 'cookies', 'elapsed', 'request']
>>> r.url
'http://www.google.com/'
>>>

সবসময় কাজ করে না। এছাড়াও, আপনি __attr__বর্ণনায় লিখবেন __attrs__তবে কোডটি ব্যবহার করুন। উভয়েই আমার পক্ষে কাজ করেনি (ওয়ার্কজেগ.ড্যাটাস্ট্রিকচারস।ফাইলে স্টোরেজ)
জোনাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.